3

我有一个 iOS 应用程序,用户可以在其中订购照片打印件。用户可以在订购打印之前将他选择的文本添加到照片上。现在,我的问题是我们的打印机不支持汉字。我有办法限制用户只使用我的打印机支持的一组语言吗?我假设应用程序不能强制用户为其键盘选择语言。所以,我想在 UITextView 的“shouldChangeCharacters”方法上禁止无效文本。我知道我可以想出一组我的打印机和用户 NSCharacterSet 支持/不支持的所有字符来限制,但有没有更好的方法来实现这一点?

4

1 回答 1

3

使用 anNSCharacterSet是正确的方法。像这样的东西:

- (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;
}
于 2012-09-10T16:41:22.040 回答