UITextField事件

1.delegate

//设置textField是否允许编辑

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;       // return NO to disallow editing.

//进入编辑状态

- (void)textFieldDidBeginEditing:(UITextField *)textField;          // became first responder

//设置textField是否允许结束编辑

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;         // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end

//退出编辑状态(即便你设置了不允许结束编辑,在某些情况下也有可能退出编辑状态)

- (void)textFieldDidEndEditing:(UITextField *)textField;             // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called

//监控是否改变当前输入的字符,yes为改变,no为默认不改变

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text

//在点击clear按钮的时候进入,询问是否清除。返回NO为忽视清除按钮,不清除。

- (BOOL)textFieldShouldClear:(UITextField *)textField;              // called when clear button pressed. return NO to ignore (no notifications)

//点击键盘return按钮的时候,回调此方法,设为NO的时候会忽视return按钮的操作

- (BOOL)textFieldShouldReturn:(UITextField *)textField;             // called when 'return' key pressed. return NO to ignore.


2.notification

//类似textFieldDidBeginEditing

UIKIT_EXTERNNSString *const UITextFieldTextDidBeginEditingNotification;

//类似textFieldDidEndEditing

UIKIT_EXTERNNSString *const UITextFieldTextDidEndEditingNotification;

//

UIKIT_EXTERNNSString *const UITextFieldTextDidChangeNotification;


3.限制输入字符数:

-(void)viewWillAppear:(BOOL)animated

{

     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notificationTextFieldValueChange:) name:UITextFieldTextDidChangeNotification object:txfEdit];

}


-(void)notificationTextFieldValueChange:(NSNotification *)notification

{

    UITextField * textField = (UITextField *)txfEdit;

    NSInteger kMaxLength = 12;

    UITextRange * selectedRange = [textField markedTextRange];

    QLLog(@"selectedRange:%@",selectedRange);

    NSString * newText = [textField textInRange:selectedRange];

    QLLog(@"newText:%@",newText);

    

    NSString *toBeString = textField.text;

    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式

    if([lang isEqualToString:@"zh-Hans"]) { //简体中文输入,包括简体拼音,健体五笔,简体手写

        //获取高亮部分

        UITextPosition * position =[textField positionFromPosition:selectedRange.start offset:0];

        if(!position) {

            //没有高亮选择的字,则对已输入的文字进行字数统计和限制

            if(toBeString.length > kMaxLength) {

                textField.text = [toBeString substringToIndex:kMaxLength];

            }

        }else{

            //有高亮选择的字符串,则暂不对文字进行统计和限制

        }

    }

    //中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

    else{

        if(toBeString.length > kMaxLength) {

            textField.text= [toBeString substringToIndex:kMaxLength];

        }

    }

    

}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值