パスワードボックスtextfieldは入力文字と数字を制限します

1462 ワード

検索したところ、ネット上のほとんどのやり方が間違っていることが分かった.次はメモを取って、自分のノートを自分の目標は1週間ぐらい文章を書くことです.やはり一部の人に役立つような気がします.正常な考え方は代理方法を実現することです.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {}
 

しかし、漢字を入力して連想語をクリックすると、この方法は実行されないことが分かったので、
addTarget:この傍受TFを使用する.しばらく問題に気づかなかったが次は正解だ
[self.tfPassword addTarget:self action:@selector(passwordTFDidChange:) forControlEvents:UIControlEventEditingChanged];//xianzhi lzc
- (void)passwordTFDidChange:(UITextField *)textField
{
    NSString *inputStr = textField.text;
    if (inputStr.length == 0) return;
    if (inputStr.length>12) {// 12 
        textField.text = [inputStr substringToIndex:12];
    }
    NSMutableString *str = [NSMutableString stringWithString:textField.text];
    for (NSInteger i = str.length-1; i>-1; i--) {
        NSInteger c = [str characterAtIndex:i];
        BOOL result = [self filter:c ];
        if (!result) {
            [str replaceCharactersInRange:NSMakeRange(i, 1) withString:@""];
        }
    }
    textField.text = str;
    
}

- (BOOL)filter:(NSInteger)c// , 
{
    if (c>='0' && c<= '9') {
        return YES;
    }
    if (((c>='a' && c<='z') || (c>='A' && c<='Z'))) {
        return YES;
    }
    return NO;
    
}

終わった、暇があればソースを見てゆっくり自分を向上させなければなりません.