Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将UITextField限制为仅限英语?(停止输入中文拼音)_Ios_Xcode_Uitextfield_Uitextfielddelegate - Fatal编程技术网

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

Ios 如何将UITextField限制为仅限英语?(停止输入中文拼音),ios,xcode,uitextfield,uitextfielddelegate,Ios,Xcode,Uitextfield,Uitextfielddelegate,我正在建立一个应用程序,在台湾发布,所以它将主要是中文,但用户名必须是英文。我不知道如何阻止汉字被输入。到目前为止,我已将用户名的长度限制为12个字符,并且字符必须在下面定义的集合中: #define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 我实现了-(BOOL)textField:(UITextField*)textField shouldChangeCha

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

#define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
我实现了-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string方法,现在我的UITextField适用于上述两种情况。然而,尽管一个汉字不在集合中,但由于使用拼音打字,它仍然会出现,因为它是英语。即李 李是不是让我先打l,然后打I,再打汉字李 出现。有什么办法可以解决这个问题吗?任何帮助都将不胜感激。谢谢你用了这个

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

}
用这个

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

}

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

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

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

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

我试过了,但没用。我想这是因为用拼音,你实际上是在汉字出现之前先用英语输入的,而且应该更改字符在每次按键后都会调用Range,即英语字符…尝试了这个方法,它就不起作用了。我想这是因为在中文字符出现之前,你实际上是先用英文输入的,而且应该更改字符在每次按键后调用Range,即英文字符…这是错误的。用户仍然可以将任何内容粘贴到文本字段中。@rmaddy它可以通过验证检查检测到,例如,在提交表单时。这是错误的。用户仍然可以将任何内容粘贴到文本字段中。@rmaddy它可以通过验证检查来检测,例如,在提交表单时。