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