確定キー以外の操作でキーボードを隠す
テキストフィールドで確定キー以外の操作によってキーボードを隠したいと思った。
例えばキャンセルボタンを押した場合や、他のコントロールにフォーカスを移した場合など。
やり方を探していたら該当するメソッドなどは見つからなかったが、テキストフィールドをいったんビューから削除して追加し直してやると期待通りの動作をした。
テキストフィールドの内容はクリアされないので、フォーム入力の途中で使っても問題ない。
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では試してません。
