UITextField相关

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、键盘遮挡问题(视图上移)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值