移行先サイト
テキストが空の間、ヒント文字をテキストフィールドに指定するためには、 hintTextプロパティにヒントメッセージを指定します。 AndroidもiOSも色やフォントなどは指定できないようですが、無難な色なので特に問題はないかと。
var textField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'ヒントテキスト' });
keyboardTypeにTitanium.UI.KEYBOARD_NUM_PAD,Titanium.UI.KEYBOARD_DECIMAL_PADを使うと フィールドフォーカス時から数値入力用のキーボードパットが表示されて便利ですが、完了キーがないためキーボードが閉じられない状態になります。
キーボードのツールバーに完了ボタンを表示してフォーカスを外します。
簡単に書くと以下のようになります(実際にはダミーボタンをいくつか追加して完了ボタンの位置を調整します)
var textField; var doneBtn = Titanium.UI.createButton({ title : L('Done'),width : 67,height : 32 }); doneBtn.addEventListener('click',function(e){ textField.blur();}); textField = Ti.UI.createTextField({ clearButtonMode: Titanium.UI.INPUT_BUTTONMODE_ONFOCUS, keyboardType:Titanium.UI.KEYBOARD_DECIMAL_PAD, keyboardToolbar : (Ti.Platform.osname=="android")?null:[doneBtn] });
ver 2.1.0
TableViewの中のTableViewRowにTextFieldを入れた場合に、 日本語入力が可能なソフトキーボードを表示すると1文字入力ごとにフォーカスが外れて入力できません。
回避方法
TabGroup又はWindowにwindowのSoftInputModeにTi.UI.Android.SOFT_INPUT_ADJUST_PANを設定すると問題を回避できました。 iOSではこのパラメータを設定すると落ちるので外しておく必要があります。
経験則ですがTabGroupにつけるとTabGroupのTabに直接指定されたWindowにはこのパラメータが有効化されていますが、 新たにTab.openで開かれたウィンドウには有効になっていないようなのでWindow自体にも指定しておく必要があるようです。
TabGroupの場合
var self = Ti.UI.createTabGroup({ windowSoftInputMode: (Ti.Platform.osname=="android")? Ti.UI.Android.SOFT_INPUT_ADJUST_PAN : null });
ver 2.1.0
createTextFieldでwidth:200としているにもかかわらず、なぜかサイズがTi.UI.SIZEとなる場合があります。
jssファイルで指定するとサイズが指定できます。
ver 2.1.0
Androdのfocus,blueメソッドもイベントもかなり奇抜な動きをするので注意をしなければなりません。
Android: Textfield: The focus on textfield does not happen through textfield focus method