簡體   English   中英

如何過濾復制粘貼字符串目標c

[英]How to filter copy paste string objective c

有什么辦法可以將復制的文本/字符串過濾到UITextField 我已經嘗試過使用UITextField方法shouldChangeCharactersInRange ,但是它只在我們鍵入時過濾,但是當我們粘貼到它時,仍然無法過濾。 我希望UITextField僅可以通過字母數字輸入,但仍可以通過復制粘貼通過其他char輸入。

這是我的一部分代碼

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {
if (textField == _nameField) {
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NAME_CHARACTERS] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [string isEqualToString:filtered];
}

提前致謝。

即使用戶粘貼到字段中,也會調用shouldChangeCharactersInRange

如果您在該功能中難以完成所需的工作,那么可以輕松地做到這一點:

- (BOOL)textField:(UITextField *)shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self textFieldDidUpdate:textField];
    });

    return YES;
}

- (void)textFieldDidUpdate:(UITextField *)textField {
    // Filter and reset your textfield content
}

這不是理想的,但是可以完成工作。

也許這會對您有所幫助。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
    BOOL valid = [[string stringByTrimmingCharactersInSet:alphaSet] isEqualToString:@""];
    return valid;
}

要獲取僅包含字母數字的字符串,可以使用此

NSCharacterSet *unwantedCharacters = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSLog(@"%@",[[string componentsSeparatedByCharactersInSet: unwantedCharacters] componentsJoinedByString: @""]);

但是,那么您將需要在現場自己進行一些操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM