アプリガール 〜キーボードをシュッとねPart2〜【創作の本棚】

〜キーボードをシュッとねPart2〜

前回のあらすじ

すっかり意気込んで『なんちゃって電卓アプリ』の開発をはじめたものの、キーボードの閉じかたがわからず困った凛子。僕は凛子にハリセンでしばかれつつキーボードを閉じる方法を模索する。そこに理沙がやってきて、僕の主人公としての立場が……。

前回が気になるあなたはアプリガール 〜キーボードをシュッとねPart1〜【創作の本棚】を見てくださいね。

本編

「今回は、キーボードを閉じる方法を紹介するわよ」

「よっ、待ってました。理沙屋!」

「まずは、ここにUITextFieldDelegateと書くの。<と>の記号で囲むのを忘れないでね。あ、そうそう。このコードはObjective-Cだからね。Swiftでの書きかたを知りたいあなたはちょっとまってね」

「理沙、いまだれとしゃべっとったん?」

「気にしないで♡」

「まあええか。ほんで、このUITextFieldDelegateゆうのはなんや?」

「今回のしくみはね、delegate(デリゲート)というのを使うの。delegateについて説明すると長くなっちゃうからまたべつの機会にゆずるとして。ごくごく簡単にいうと、このViewController(ビューコントローラー)という画面さんとテキストフィールドさんがキーボードを閉じるお仕事を役割分担しようという感じなの」

「なんで役割分担するん?」

「それはね、テキストフィールドさんがキーボードを監視する役割だからなの。だから、テキストフィールドさんはじっとキーボードを見てて、いざリターンキーを押されたら画面さんに連絡する係になるの」

「ほんなら、画面さんはキーボードを閉じる係になるんやな!」

「そうそう、さすが凛子ちゃん!」

「へへっ、なんたってうちはアプリガールやからな」

 記憶喪失のアプリガールだけどね! 僕はこのままでは出番がないかもしれないという危機感から、むりやり心のなかでツッコミをいれる。僕のそんな気持ちは(当然のごとく)スルーされて、理沙と凛子の会話はつづいていく。

「それでね、UITextFieldDelegateはテキストフィールドさんからの連絡を受けられるように、画面さんが自己紹介をしているのよ」

「ほうほう」

「つぎに、viewDidLoadにinputTextField.delegate = self;って書くの。これはね、画面さんがテキストフィールドさんに居場所を伝えているのよ」

「『ワイはここにおるからいつでも呼んでやー』っちゅう感じやな」

「そんな感じ!」

「-(BOOL)textFieldShouldReturn:(UITextField *)textField{}は、テキストフィールドさんが画面さんに『リターンキー押されましたよー。あとはよろしくねー』と言っているの」

「ちゅうことは、最後のこれ
[textField resignFirstResponder];
return YES;
は、画面さんが『よっしゃー、まかせてや! ほんならキーボード閉じるでー』とキーボードを閉じているんやな。せやろ?」

「大正解! やっぱり凛子ちゃんは理解がはやいよね」

 ああ、やっぱり僕の出番はまったくなかった。いや、アプリ開発はまだまだつづくんだから、これで終わりじゃない……はず。

『オレたちの冒険ははじまったばかりだ!』

 と、今回もむりやりモノローグをはさんでみたけど、やっぱりむなしくなってしまった。

 あ、そうそう。Swift版のコードを知りたいあなたは、こっち↓を見てくださいね。

テキストフィールドにテキスト入力後、Returnでキーボードを隠す方法 [Swift1.2][UITextField] – MILLEN BOX

 それでは、また。

 

晴れた日も、曇った日も、素敵な一日をあなたに。

参考文献&アプリ

【関連する記事】

アプリガール 〜Segue編Part1〜【創作の本棚】 | はれときどきくもりZ

 

新しいぱぱんだっこでパパも健康になろう! iOS8のヘルスケアアプリに対応しました。 | はれときどきくもりZ

 

肉めないニクLINEスタンプをリリースしました! | はれときどきくもりZ

 

Written with MyEditor.

本を出版しました!

あずきちゃんバナー728px
とし
主夫で育児メンで小説家でアプリ開発者でアプリ開発講師でアプリ開発本執筆中でLINEスタンプ作者でブロガーのとしです。 このブログは、タイトル通り晴れた日も曇った日も人生を充実させるちょっとした楽しさを取り上げます。それが少しでも誰かのお役に立つ日がくれば幸いです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください