将iOS文本输入限制为一组语言

3
我有一个 iOS 应用程序,用户可以在订购照片印刷之前将自己选择的文本添加到照片上。现在,我的问题是我们使用的打印机不支持中文字符。我是否有办法限制用户仅使用打印机支持的语言集合?我认为应用程序不能强制用户选择键盘的语言。因此,我希望在“shouldChangeCharacters”方法的 UITextView 中禁止无效文本。我知道可以列出打印机支持/不支持的所有字符,并使用 NSCharacterSet 限制,但是否有更好的方法实现这一点?
1个回答

3

使用 NSCharacterSet 是正确的做法。可以这样实现:

- (NSCharacterSet *)bannedCharacters {
    static NSCharacterSet *bannedCharacters;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        NSMutableCharacterSet *set = [[NSMutableCharacterSet alloc] init];

        // Use lines like these to add the characters allowed by your printer.
        [set addCharactersInRange:NSMakeRange(65, 26)];
        [set addCharactersInString:@"0123456789"];

        bannedCharacters = [set invertedSet];
    });
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacement {
    NSRange badRange = [replacement rangeOfCharacterFromSet:[self bannedCharacters]];
    return badRange.location == NSNotFound;
}

嗨,罗布,谢谢你的回答。有没有一种标准的方法只允许ASCII字符? - Ravi
1
可打印的 ASCII 字符范围为 NSMakeRange(32,95) - rob mayoff
会有 Swift 版本吗? - Antony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接