web-dev-qa-db-ja.com

iOSでtextFieldShouldReturnが呼び出されない

キーボードを非表示にする方法を見つけようとしていますが、textFieldShouldReturnを起動するのに問題があります。どうして?

これが行われたことです:

* .h

_@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
_

* .c

_txtCardNumber.delegate = self;

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField setUserInteractionEnabled:YES];
    [textField resignFirstResponder];
    return YES;
}
_

また、textFieldのデリゲートは、Interface BuilderのFiles Ownerに設定されています。奇妙なことの1つは、viewControllerの- (void)textFieldDidEndEditing:(UITextField *)textFieldが機能していることです。

キーボードの非表示を機能させる方法は?

33

私はまったく同じ問題を抱えていました。それは、インターフェイスビルダーのテキストフィールドのデリゲートを「ファイルの所有者」に設定するのを忘れたためです。

79
Warren Crowther

同じ問題があり、Warren Crowtherが示唆したように、Ctrlキーを押しながらTextBoxから「ファイルの所有者」ラベルにドラッグすることで解決できました。

(まあ、私はときどきVisual Studioが恋しい... !!)

enter image description here

(既に言われていることを繰り返し申し訳ありませんが、スクリーンショットが役立つかもしれないと思いました!)

28
Mike Gledhill

私はデリゲートセットとすべてを持っていました。しかし、UITextfieldの代わりにUITextViewを使用していました...

おそらくこれは、デリゲートメソッドが起動されない理由を理解しようとしている人を助けるでしょう。

11
momo

あなたはそれをあなたのコードに入れているようですが、将来の訪問者のために、これをあなたのコードに追加してください:

yourTextField.delegate = self;

8
sridvijay

あなたはxibを使っていると思います。もしそうなら、そこにもデリゲートを設定する必要があります。 xibでUITextfiledを右クリックすると、デリゲートオプションがファイル所有者にドラッグされます。

6
MANiK

以下は、xcode 5のスクリーンショットで更新されたMike GledhillとWarren Crowtherからの回答です。

(UITextFieldデリゲートを設定するには、下の画像に示すように、Ctrlキーを押しながらUITextFieldから「ファイルの所有者」の黄色のボタンにドラッグします。UITextFieldデリゲートが設定されていない場合、textFieldShouldReturnメソッドは呼び出されません)。

enter image description here

3
tmr

私はすべてを正しく配線しましたが、- (BOOL)textFieldShouldReturn:(UITextField *)textFieldはまだ呼び出されていませんでした!

回避策として、「EditingDidEnd」で起動するメソッドを構成しました。

enter image description here

2
kraftydevil

接続インスペクタに移動し、デリゲートを接続してコントローラを表示します。

1
Biren

MultiSalesViewControllerUITextFieldDelegateプロトコルを実装していることを確認してください:

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

追加してみてください[self becomeFirstResponder];[textField resignFirstResponder];


編集:もう1つの考え.. UITextFieldreturnKeyTypeの値が設定されていますか?

txtCardNumber.returnKeyType = UIReturnKeyDone;

関数を機能させるためにこれを設定する必要があるかどうかわかりません

1
binnyb

機能させるためのチェックリスト:

  • コントローラをdelegateとしてUITextField Instanceに設定しましたか?

  • プロパティへの割り当て(Autorelease)または明示的な保持によって、コントローラーが割り当て解除されていないことを確認します。

0
San