3

ユーザーが写真のプリントを注文できる iOS アプリケーションがあります。ユーザーは、プリントを注文する前に、写真に好きなテキストを追加できます。さて、私の問題は、私たちが持っているプリンターが漢字をサポートしていないことです。プリンタがサポートする言語セットのみを使用するようにユーザーを制限する方法はありますか? アプリケーションは、ユーザーがキーボードで選択できる言語を強制することはできないと思います。そこで、UITextView の「shouldChangeCharacters」メソッドで無効なテキストを禁止したいと考えました。制限するプリンターとユーザー NSCharacterSet でサポートされている/サポートされていないすべての文字のセットを考え出すことができることはわかっていますが、これを達成するためのより良い方法はありますか?

4

1 に答える 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;
}
于 2012-09-10T16:41:22.040 に答える