Objective-C: TextFieldでキーボードを出さない
概要
出したキーボードを何らかのアクションをきっかけに、非表示にする方法は沢山見つけたのですが、そもそも表示専用にしたいとか、画面内に配置したボタンからの入力だけにしたいとか、幾らか動機はあると思います。 そもそも、フォーカスを当ててもキーボードが現れないようにする方法です。
詳細
まずは、TextFieldが無いと始まりません。StroyBoardで適当に配置されているとします。 そして、UITextFieldDelegateが指定されている必要があります。 つまり、以下のような感じ。
ViewController.hで
@interface ViewController : UIViewController <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *InputTextField;
そうすると、ViewController.mでは、以下のメソッドを自分で好きにする権利が得られるわけです。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { return NO; }
好きにできるので、何もしません。 つまりは、キーボードが出てこないということです。
最後のNOというのがミソで、これをYESとかやっちゃうと元の木阿弥ですよ。
まとめ
そもそもTextFieldの用途と違うじゃんっていう話もあるかと思います。Labelの見た目をTextField風にして対処することも一つの方法だと思います。そちらに関してはまた別の投稿で扱ってみたいと思います。