首页 文章

如何仅将UITextField限制为英语? (停止中文拼音输入)

提问于
浏览
1

我正在构建一个在台湾发布的应用程序,所以它主要是中文,但用户名必须是英文 . 我不知道如何阻止输入汉字 . 到目前为止,我已将用户名的长度限制为12个字符,并且字符必须位于以下定义的集合中:

#define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

我实现了 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string方法现在我的UITextField适用于上述两个条件 . 然而,虽然中文字符不在集合中,但由于拼音被用来打字它仍然是英文版 . 即李是li所以我能够输入l然后我然后出现中文字符李 . 反正有没有绕过这个?任何帮助将不胜感激 . 谢谢

2 回答

  • 8

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

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

    用过这个

    -(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;
    
    }
    

相关问题