tea*_*bot 12 iphone objective-c uitextfield
我的应用程序中有一个UITextField.我想限制可以输入到字段中的字符集到我定义的集合.当使用UITextFieldDelegate方法提交文本时,我可以过滤输入到字段中的字符:
- (BOOL)textFieldShouldReturn:(UITextField*)textField
Run Code Online (Sandbox Code Playgroud)
然而,这给用户留下了错误的印象,因为虽然从最终值中删除了受限制的字符,但在按下Return/Done/etc之前它们仍然可见地输入到文本字段中.什么是阻止在键盘上选择文本字段中出现限制字符的最佳方法?
注意:我的操作是假设我无法控制iPhone键盘提供哪些键.我知道我可以在各种键盘实现之间切换,但我的印象是我无法禁用特定键.这个假设可能不正确.
tea*_*bot 25
我按照marcc的建议做了,效果很好.示例实现如下.
注意:为简洁起见,选择了变量名称,但未反映我的编码标准:
...
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;
}
Run Code Online (Sandbox Code Playgroud)
mar*_*rcc 14
看着 textField:shouldChangeCharactersInRange
UITextFieldDelegate无论何时键入新字符或从文本字段中删除现有字符,都会调用此方法.您可以返回NO以不允许更改.