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