6

使用中にキーボードの UITextInputTraits を変更したい....

私の理想的なコードは次のようになります。

- (IBAction)nameTextDidChange:(UITextField *)sender {
    if ([sender.text isEqualToString:@""]) {
        sender.returnKeyType = UIReturnKeyDone;
    } else {
        sender.returnKeyType = UIReturnKeySearch;
    }
}

だから...テキストを含む文字列を実行するため、空の文字列には別の「戻る」ボタンがあります。上に投稿したコードは機能しません。キーボードは元のテキスト入力特性を保持します。

誰かアイデアはありますか、それとも私がどんなに頑張ってもうまくいかないのでしょうか?

乾杯!

ニック。

Deepak のおかげで、これは私が実際に使用したコードです。

if ([sender.text isEqualToString:@""]) {
    sender.returnKeyType = UIReturnKeyDone;

    [sender resignFirstResponder];
    [sender becomeFirstResponder];
} else if (sender.returnKeyType == UIReturnKeyDone) {

    NSString *cachedLetter = sender.text;

    sender.returnKeyType = UIReturnKeySearch;

    [sender resignFirstResponder];
    [sender becomeFirstResponder];

    sender.text = cachedLetter;
}
4

3 に答える 3

5

メソッドの最後に次の行を追加することで、これを機能させることができます。

if ([textField.text isEqualToString:@""]) {
    textField.returnKeyType = UIReturnKeyDone;

    [textField resignFirstResponder];
    [textField becomeFirstResponder];
} else if (textField.returnKeyType == UIReturnKeyDone) {
    textField.returnKeyType = UIReturnKeySearch;

    [textField resignFirstResponder];
    [textField becomeFirstResponder];
}

これはうまくいくはずです。

テキスト入力が変化するように、基本的にオンとオフを切り替えます。2 番目の if は、必要な場合にのみフリップするようにすることです。

于 2010-01-28T17:35:53.320 に答える
0

rejectFirstResponder/becomeFirstResponder & reloadInputViews にはいくつかの注意事項があります。stackoverflow.com/questions/5958427/… を参照してください。これらは、キーボードを初期状態に戻します。そのため、ユーザーが他のキーボード レイアウト (数字、句読点など) のいずれかに切り替えた場合、その状態は失われます。私は良い解決策を見つけたことがありません。

于 2013-02-17T19:00:59.543 に答える