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

问题描述 投票:0回答:3

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

#define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

我实现了 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 方法,现在我的 UITextField 适用于上述两个条件。然而,尽管汉字不在集合中,但由于使用拼音输入,它仍然显示为英文。即“李”是“li”,所以我可以输入“l”,然后输入“i”,然后就会出现汉字“李”。有办法解决这个问题吗?任何帮助将不胜感激。谢谢

ios xcode uitextfield uitextfielddelegate
3个回答
9
投票

尝试设置输入栏的键盘类型

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;

}

0
投票

斯威夫特5:

只需将键盘类型更改为

asciiCapable

englishNameTextField.keyboardType = .asciiCapable
© www.soinside.com 2019 - 2024. All rights reserved.