2

オブジェクトの を使用して、オブジェクト ( 内)にUITextFieldピッカーを表示するコードが非常にうまく機能しています。これにより、キーボードが表示されなくなりますが、誰かがフィールドに直接入力することはできなくなります。UITableViewCellinputViewUITextField

公平を期すために、彼らは何かを貼り付けることしかできませんが、フィールドにカスタム値が必要ない場合は許可されるべきではありません.

テキスト入力をオフにする方法はありますか?私はもう試した:

return NO;

デリゲート メソッド内textFieldShouldBeginEditing()ですが、これはフィールドがまったく動作しないようにするためだけに機能するため、ピッカーは表示されません。

この動作を防ぐ他の方法はありますか?

前もって感謝します。

4

3 に答える 3

3

UITextFieldDelegateメソッド を使用できます

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

これは、何かがテキスト フィールドのテキストを変更しようとするたびに呼び出されます。string値が期待どおりのもの (ピッカー ビューからのもの) であることを簡単に確認できます。そうでない場合は破棄します。string値が必要なものである場合は、を返します。YESそうでない場合は、を返しますNO

于 2011-11-15T17:24:16.800 に答える
1

画面外にある別の UITextfield を使用するのはどうですか? uipicker は、オフスクリーン テキスト フィールドの入力ビューです。日付ピッカーが変更されたときのハンドラーでは、元のテキスト フィールドの text プロパティが更新されるように指定されています。元のテキスト フィールドをタップしてピッカーを表示するには、次のいずれかの方法を使用します。2. セル内のテキストフィールドがラベルに置き換えられ、代わりにタッチインが didSelectRowAtIndexPath でセルによって検出されます。
3. セル内のテキスト フィールドは、タッチを検出した後、didBeginEditing 内のテキスト フィールドを userInteractionEnabled = NO に設定します (これが機能するかどうかはわかりません)。

考えてみると、2 番目のテキストフィールドを作成せずに #3 を試すこともできます。

于 2011-11-20T22:44:18.490 に答える
0

あなたが求めているのは、サブメニューを無効にすることです。

このサブクラス UITextField を実行し、次のメソッドを実装するには

(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    return NO;
}

これにより、メニューが表示されなくなります。

于 2012-02-05T06:08:09.340 に答える