我正在构建一个在台湾发布的应用程序,所以它主要使用中文,但用户名必须是英文。我不知道如何阻止输入汉字。到目前为止,我已将用户名的长度限制为12个字符,并且字符必须位于以下定义的集合中:
#define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
我实现了 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string方法现在我的UITextField适用于上述两个条件。然而,虽然汉字不在集合中,但由于拼音被用来打字,它仍然出现,它是英语。即李是li所以我能够输入l然后我然后出现中文字符李。反正有没有绕过这个?任何帮助将不胜感激。感谢
答案 0 :(得分:9)
尝试设置输入字段的键盘类型
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectZero];
tf.keyboardType = UIKeyboardTypeASCIICapable;
答案 1 :(得分: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;
}