確定キー以外の操作でキーボードを隠す
テキストフィールドで確定キー以外の操作によってキーボードを隠したいと思った。
例えばキャンセルボタンを押した場合や、他のコントロールにフォーカスを移した場合など。
やり方を探していたら該当するメソッドなどは見つからなかったが、テキストフィールドをいったんビューから削除して追加し直してやると期待通りの動作をした。
テキストフィールドの内容はクリアされないので、フォーム入力の途中で使っても問題ない。
cancelButton.addEventListener("click", -> win.remove(textField) win.add(textField) )
でもなんかもっとスマートなやり方はないのだろうか。
画面遷移によっても消えるので、ケースによってはそれで間に合うかも。
サンプルコード
動作テストのためのサンプル。
app.coffee
win = Ti.UI.createWindow(title: "Keyboard Test") cancelButton = Ti.UI.createButton(systemButton:Titanium.UI.iPhone.SystemButton.CANCEL) win.setRightNavButton(cancelButton) textField = Ti.UI.createTextField( color:'#336699' left:10 top:10 width:300 height:40 hintText:'テスト' keyboardType: Titanium.UI.KEYBOARD_DEFAULT returnKeyType: Titanium.UI.RETURNKEY_DONE borderStyle: Titanium.UI.INPUT_BORDERSTYLE_ROUNDED suppressReturn: true ) win.add(textField) cancelButton.addEventListener("click", -> win.remove(textField) win.add(textField) ) win.hideTabBar() win.showNavBar() # タブはナビゲーションバーを使うためだけに定義 mainTab = Ti.UI.createTab( title: "Main" window: win #window: dateWin ) tabGroup = Ti.UI.createTabGroup() tabGroup.addTab(mainTab) tabGroup.open()
CoffeeScriptなのでapp.jsにコンパイルしないと動かないです。
あと例によってAndroidでは試してません。