UITextField相关

来源:互联网 发布:淘宝如何举报售假 编辑:程序博客网 时间:2024/05/20 14:19

1、删除前一输入的字符

@implementation UITextFieldBack- (void)myDeleteBackward {    if ([self conformsToProtocol:@protocol(UITextInput)]){        // iOS5 and later        [self deleteBackward];        // Or do below line if you are not deploy-targeting 5.0 or above and want to avoid warnings        //[textField performSelector:@selector(deleteBackward)];    } else {        @try {            //check current selected range            NSRange selectedRange = [[self valueForKey:@"selectionRange"] rangeValue];            if (selectedRange.location == NSNotFound){                selectedRange = NSMakeRange([[self text] length], 0);            }            if (selectedRange.location < 1){                return;            }            //delete one char            NSRange deleteRange = (selectedRange.length > 0) ? selectedRange : NSMakeRange(selectedRange.location - 1, 1);            self.text = [self.text stringByReplacingCharactersInRange:deleteRange withString:@""];            //adjust the selected range to reflect the changes            selectedRange.location = deleteRange.location;            selectedRange.length = 0;            [self setValue:[NSValue valueWithRange:selectedRange] forKey:@"selectionRange"];        } @catch (NSException *exception) {            NSLog(@"deleteBackword failed but catched. %@", exception);        } @finally {}    }}@end

2、TextField只要有输入,马上清掉旧值

@interface UITextFieldEx : UITextField{BOOL deleteFirst;}@property(nonatomic)BOOL deleteFirst;@end@implementation UITextFieldEx@synthesize deleteFirst;-(id)initWithFrame:(CGRect)frame{self = [super initWithFrame:frame];if (self) { deleteFirst = YES;}return self;}@end在textFieldDelegate中实现:-(void)textFieldDidBeginEditing:(UITextField *)textField{UITextFieldEx *field = (UITextFieldEx *)textField;field.deleteFirst = YES;}-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{UITextFieldEx *field = (UITextFieldEx *)textField;if (field.deleteFirst) {field.text = @"";field.deleteFirst = NO;}return YES;}

3、LeftView

UILabel *currencyLabel = [[UILabel alloc] initWithFrame:CGRectZero];//CGRectZero相当于CGRectMake(0,0,0,0)      currencyLabel.text = [[[NSNumberFormatter alloc] init] currencySymbol];//初始化Label内容返回接受者的本地货币符号      currencyLabel.font = self.myTextField.font;      [currencyLabel sizeToFit];//调整和移动接收者的视图,它只是包含它自己的视图。      self.myTextField.leftView = currencyLabel;      self.myTextField.leftViewMode = UITextFieldViewModeAlways;//设置左视图一直显示

4、输入事件

//当UITextField输入文字后触发的事件  -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{      BOOL result = YES;      if ([textField isEqual:self.myTextField]) {          NSString *wholeText = [textField.text stringByReplacingCharactersInRange:range withString:string];//追加后输入的字符串          [self calculateAndDisplayTextFieldLengthWithText:wholeText];//重新计算字符长度      }      return result;  } 

5、键盘遮挡问题(视图上移)

http://blog.csdn.net/developer_zhang/article/details/8854177

0 0