Frage

Ich habe eine UITextField, die Ich mag würde „automatisch“ seine Grenzen Größe anpassen, um Platz für die Zeichenkette in dem Feld hinzugefügt zu werden. Allerdings würde ich es auf max-out in der Breite bei einer bestimmten Menge gefallen. Was ist die beste Art und Weise, dass ich über das tun dies gehen kann?

Vielen Dank für jede Hilfe.

EDIT:

TestingView.h

#import <UIKit/UIKit.h>


@interface TestingView : UIView <UITextFieldDelegate> {

}

@end

TestingView.m

#import "TestingView.h"


@implementation TestingView

- (void)awakeFromNib
{
    CGRect testingBounds = self.bounds;

    testingBounds.size.width = testingBounds.size.width - 20;

    testingBounds.size.height = 30;

    CGPoint testingCenter = self.center;

    testingCenter.y = testingCenter.y - 75;

    UITextField *testingField = [[UITextField alloc] initWithFrame:testingBounds];

    testingField.center = testingCenter;

    testingField.delegate = self;

    testingField.placeholder = @"Testing";

    [self addSubview:testingField];
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    int yourMaxWidth = 150;

    float width = [textField.text sizeWithFont:
                   [UIFont systemFontOfSize: 14]  
                                 constrainedToSize:
                   CGSizeMake(yourMaxWidth, textField.bounds.size.height)].width;

    textField.bounds = CGRectMake(textField.bounds.origin.x,
                                      textField.bounds.origin.y,
                                      width, 
                                      textField.bounds.size.height);

    return YES;
}
@end
War es hilfreich?

Lösung

In der Delegatmethode textfield: shouldChangeCharactersInRange: replacementString: Sie UITextField die Textgröße durch die Verwendung messen sollte sizeWithFont: constrainedToSize: und nutzen die Rückkehr CGSize Breite Parameter Ihre UITextField der Grenzen Breite eingestellt werden.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    float width = [yourTextField.text sizeWithFont:
           [UIFont systemFontOfSize: 14]  
                                      constrainedToSize:
           CGSizeMake(yourMaxWidth, yourTextField.bounds.size.height)].width;

    yourTextField.bounds = CGRectMake(yourTextField.bounds.origin.x,
                                      yourTextField.bounds.origin.y,
                                      width, 
                                      yourTextField.bounds.size.height);
}

Andere Tipps

Warum kann man nicht einfach sagen:

if (yourTextField.frame.size.width > self.frame.size.width) {

      yourtextField.frame.size.width = yourtextField.frame.size.width;

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top