キーボードを非表示にする方法を見つけようとしていますが、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
が機能していることです。
キーボードの非表示を機能させる方法は?
私はまったく同じ問題を抱えていました。それは、インターフェイスビルダーのテキストフィールドのデリゲートを「ファイルの所有者」に設定するのを忘れたためです。
同じ問題があり、Warren Crowtherが示唆したように、Ctrlキーを押しながらTextBoxから「ファイルの所有者」ラベルにドラッグすることで解決できました。
(まあ、私はときどきVisual Studioが恋しい... !!)
(既に言われていることを繰り返し申し訳ありませんが、スクリーンショットが役立つかもしれないと思いました!)
私はデリゲートセットとすべてを持っていました。しかし、UITextfieldの代わりにUITextViewを使用していました...
おそらくこれは、デリゲートメソッドが起動されない理由を理解しようとしている人を助けるでしょう。
あなたはそれをあなたのコードに入れているようですが、将来の訪問者のために、これをあなたのコードに追加してください:
yourTextField.delegate = self;
あなたはxibを使っていると思います。もしそうなら、そこにもデリゲートを設定する必要があります。 xibでUITextfiledを右クリックすると、デリゲートオプションがファイル所有者にドラッグされます。
以下は、xcode 5のスクリーンショットで更新されたMike GledhillとWarren Crowtherからの回答です。
(UITextFieldデリゲートを設定するには、下の画像に示すように、Ctrlキーを押しながらUITextFieldから「ファイルの所有者」の黄色のボタンにドラッグします。UITextFieldデリゲートが設定されていない場合、textFieldShouldReturnメソッドは呼び出されません)。
接続インスペクタに移動し、デリゲートを接続してコントローラを表示します。
MultiSalesViewController
がUITextFieldDelegate
プロトコルを実装していることを確認してください:
@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
追加してみてください[self becomeFirstResponder];
後[textField resignFirstResponder];
編集:もう1つの考え.. UITextField
にreturnKeyType
の値が設定されていますか?
txtCardNumber.returnKeyType = UIReturnKeyDone;
関数を機能させるためにこれを設定する必要があるかどうかわかりません
機能させるためのチェックリスト:
コントローラをdelegateとしてUITextField Instanceに設定しましたか?
プロパティへの割り当て(Autorelease)または明示的な保持によって、コントローラーが割り当て解除されていないことを確認します。