質問

私は、このようなアクセント付き文字(E Iüなど)、あるいは、そのような私はハイスコアテーブルでユーザ名を表示するために使用している「¥」や©などの記号としてひとつひとつの文字を、持っていないビットマップフォントを持っていますゲーム。

これは、特定の文字にUIKitのキーボードを制限、または唯一のUITextFieldで特定の文字を許可することは可能ですか?それとも私は自分の入力機構をロールバックする必要がありますか?私が考えていると古い学校は、アーケードスタイルは、時間「事」で1つの文字OKになります。

役に立ちましたか?

解決

次のUITextFieldDelegateの方法を使用してみてください可能性があります:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

他のヒント

intregus言及UITextFieldDelegateメソッドを使用して、あなたは非常に簡単にこれを行うことができます:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // Only characters in the NSCharacterSet you choose will insertable.
    NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefgABCDEFG"] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];
    return [string isEqualToString:filtered];
}

あなたのUIKeyboardTypeNamePhonePadためUITextFieldを使用してみてください。それはそれだけで文字と数字を持っています:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

あなたはあなたの関数のいずれかで「編集を変更」のイベントをリンクして得ることができるインターフェイスビルダーを使用。今、そこにあなたが長さのチェックを入れることができます。

- (IBAction)onValueChange:(id)sender 
{
    NSString *text = nil;
    int MAX_LENGTH = 20;
    switch ([sender tag] ) 
    {
        case 1: 
        {
            text = myEditField.text;
            if (MAX_LENGTH < [text length]) {
                myEditField.text = [text substringToIndex:MAX_LENGTH];
            }
        }
            break;
        default:
            break;
    }

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top