読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 979 - UITextFieldのプロパティ: inputView

オリジナルアプリ作りに奮闘中!

誕生日データを入力するためにオリジナルのポップオーバーを使ったら便利だと思って実装しました。

f:id:yataiblue:20170502181940j:plain

ところが読者のberrymuchさんから「iOSヒューマンインターフェイスガイドライン」に準拠していないという指摘をうけました(T_T)

どうせ作るならAppStoreで受け入れられるアプリを作りたいのでガイドラインに準拠させていくことにします。

ユーザーからの入力は基本、キーボードを使用するようになっています。するとシステムで用意されていないキーボードを使用したい場合、カスタムキーボードを用意しなきゃいけないのかなって最初は思いました。

しばらくググって調べてみると、UITextFieldの場合、標準キーボードの代わりにUIViewクラスの「inputView」が利用できることがわかりました。それに加え「inputAccessoryView」を使えばUIToolbarも実装できます。iPhoneiPadのどちらでも同じように使用できるんで、ポップオーバーの実装をそのままinputViewに変更しました。

f:id:yataiblue:20170518174058j:plain

しかし、1つだけ問題があります。iPadではiPhoneで存在しない謎のメニューがUIToolbarとUIDatePickerの間に出現します。

f:id:yataiblue:20170518175035j:plain

これをどうやったら隠すことができるんでしょうか?

とりあえず見た目は同じにできましたがまだ実装が追いついていません。というのもinputViewのデザインをすべてコードでしないといけないんで、NumpadViewの実装も大変なんです。

たぶん、ストーリーボードを使ってデザインできると思うので、もう少しInterface Builderの使い方も勉強した方がよさそうですね...