UItextField中国語入力方式入力時の文字長の制限

1463 ワード

一.UItextField値に従って変更する方法を追加する
  • [_textField addTarget:self action:@selector(textFiledDidChange:) forControlEvents:UIControlEventEditingChanged];

  • 二.傍受の設定
     
    [[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledDidChange:)
                                               name:@"UITextFieldTextDidChangeNotification"
                                             object:_textField];

    しかし、いずれにしても、実現の方法は同じです.
    - (void)textFiledDidChange:(UITextField *)textField
    {
        if (textField == _textField) {
            NSString *toStr = textField.text;
            NSLog(@"%lu", (unsigned long)toStr.length);
            NSString *lang = textField.textInputMode.primaryLanguage;//       
    
            if ([lang isEqualToString:@"zh-Hans"]) {//       ,      ,    ,    
                UITextRange *range = [textField markedTextRange];
                //      
                UITextPosition *position = [textField positionFromPosition:range.start offset:0];
                if (!position) {//         ,                 
                    if (toStr.length > 20) {
                        _textField.text = [toStr substringToIndex:20];
                    } //          ,             
                }
            } else {//                   ,         
                if (toStr.length > 20) {
                    _textField.text = [toStr substringToIndex:20];
                }
            }
        }
    }