ios - 具有国际键盘支持的自动大写文本字段

标签 ios uitextfield

到目前为止,我正在尝试将输入到 UITextField 中的所有字符大写(适用于美式键盘):

self.textField = UITextAutocapitalizationTypeAllCharacters;
...
// delegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSRange lowercaseCharRange = [string rangeOfCharacterFromSet:[NSCharacterSet lowercaseLetterCharacterSet]];

    if (lowercaseCharRange.location != NSNotFound) {
        textField.text = [textField.text stringByReplacingCharactersInRange:range
                                                                 withString:[string uppercaseString]];
        return NO;
    }

    return YES;
}

使用中文(拼音)等国际键盘时会出现此问题,因为字符的行为方式(以小写字母排列)。是否有解决方案/方法来检查键盘内部化类型?

最佳答案

跳过检查并始终将文本替换为大写版本会简单得多。 请注意,我还使用了当前语言环境,以便在转换为大写时考虑他们的语言环境:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    textField.text = [textField.text stringByReplacingCharactersInRange:range
                                                             withString:[string uppercaseStringWithLocale:[NSLocale currentLocale]]];
    return NO;
}

在这种情况下,性能应该不是问题,您不需要原始搜索。

关于ios - 具有国际键盘支持的自动大写文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13590706/

相关文章:

ios - 使用 shouldChangeCharactersInRange 计算 UITextField 验证中的退格

ios - 如何用密码文本字段中的圆点替换 UITextField 中的某些字符

ios - 如何快速为整个应用程序的 UITextField 设置全局占位符颜色?

ios - 无法加载 UITests 包,因为它已损坏或缺少必要的资源。尝试重新安装 bundle

ios - 迦太基建立伞形框架

ios - 字符串中的内联按钮和/或文本字段,使用 Swift 包装与文本相同的文本

ios - 如何标记 friend - 类似于 facebook(同一文本字段/ TextView 上的 ImageView 和普通文本)

ios - 复制 vs 强大的属性

ios - 使用 whatsapp IOS 调用电话号码

ios - 在哪里指定我的应用程序支持的 iOS 版本