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