iphone - 过滤输入到 UITextField 中的字符

标签 iphone objective-c uitextfield

我的应用程序中有一个 UITextField。我想将可以输入字段的字符集限制为我定义的字符集。当使用 UITextFieldDelegate 方法提交文本时,我可以过滤输入到字段中的字符:

- (BOOL)textFieldShouldReturn:(UITextField*)textField

然而,这会给用户一种错误的印象,尽管受限制的字符已从最终值中删除,但在按 Return/Done 等之前,它们仍然明显地输入到文本字段中。防止在键盘上选择受限字符时出现在文本字段中的最佳方法是什么?

注意:我的操作假设我几乎无法控制 iPhone 键盘提供的键。我知道我可以在各种键盘实现之间切换,但我的印象是我无法禁用特定的键。这个假设可能是不正确的。

最佳答案

我按照 marcc 的建议做了,效果很好。实现示例如下。

注意:变量名称是为简洁起见而选择的,并不反射(reflect)我的编码标准:

    ...
    myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"xyzXYZ"];
    ...
}

- (BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)textEntered {
    for (int i = 0; i < [textEntered length]; i++) {
        unichar c = [textEntered characterAtIndex:i];
        if (![myCharSet characterIsMember:c]) {
            return NO;
        }
    }
    return YES;
}

关于iphone - 过滤输入到 UITextField 中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1013647/

相关文章:

swift - 验证经度 double 值

iphone - CALayer 使用的简单示例——也许在 UITextField 中

ios - 如何像在 Apple 的日历应用程序中那样在导航栏 (iOS 7) 中显示/隐藏搜索栏?

iphone - 创建协议(protocol)后访问 UIPageViewController 的委托(delegate)方法

objective-c - Cocoa Mac 应用程序的一个大类与几个小类的比较

ios - 使用一个目标中的框架作为本地另一目标中的 Pod

ios - Swift UITextField 检查第二个字符的文本

iphone - 如何从 NSString 转换为 NSDate?

iphone - iphone 上的文件系统是什么?

objective-c - 读取接收和发送的网络流量字节