プロじゃないのでコピペでコーディング!

四半世紀に迫ろうとするベテラン・コピペ・プログラマーが送るコピペの元。 張って動けば良し!動かなければなんで?そんな私をサポートするブログです。 ま、動けば良いと本人が思ってるなら、これでも良いんじゃね?って思ったら生暖かく見守って頂き、こりゃ目に余る!って思ったら、優しく教えてやってください。

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風にして対処することも一つの方法だと思います。そちらに関してはまた別の投稿で扱ってみたいと思います。