如何限制的UITextField只有英语吗? (中国停止拼音输入)(How do I restr

2019-10-21 14:28发布

我建立在台湾发布的应用程序,所以这将是大多是在中国不过用户名必须为英语。 我不知道如何从被输入停止从中国文字。 到目前为止,我已经限制用户名的长度为12个字符和字符必须在该组定义如下:

#define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

我实现了 - (BOOL)文本框:(*的UITextField)文本框shouldChangeCharactersInRange:(NSRange)范围replacementString:(的NSString *)字符串方法,现在我的UITextField适用于上述两个条件。 然而,由于使用拼音输入是英语虽然中国字符不在设定它仍会出现。 即李李是这样我能够L型,然后我再出现在中国字符李。 反正是有解决这个问题? 任何帮助将不胜感激。 谢谢

Answer 1:

尝试设置输入字段的键盘类型

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectZero];
tf.keyboardType = UIKeyboardTypeASCIICapable;


Answer 2:

使用该

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
       NSCharacterSet *numbersOnly = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"];
       NSCharacterSet *characterSetFromTextField = [NSCharacterSet   characterSetWithCharactersInString:string];

    BOOL stringIsValid = [numbersOnly isSupersetOfSet:characterSetFromTextField];
    if(stringIsValid){
        return yes;
    else
       return no;

}


文章来源: How do I restrict UITextField to English only? (Stopping Chinese pinyin input)