NativeScript-Vue で次入力欄にフォーカスする方法
はじめに
NativeScript(NativeScript-Vue) で次入力欄にフォーカスする方法を整理した。
TL;DR
returnPress
イベントにハンドラを設定- ハンドラ内で
getViewById
とTextField.forcus()
を使って次フィールドにフォーカス
- ハンドラ内で
TextField
のreturnKeyType="next"
は iOS では動作しない- tjvantoll/nativescript-IQKeyboardManager も NatvieScript v6.x 系は未サポートで動作しない
目次
環境・条件
1 | $ sw_vers |
詳細
前置き
最終的なコードだけ見たい人はスキップして本題へ。
returnKeyType=”next” は iOS では動作しない
TextField
には returnKeyType
というプロパティがあり、done
, next
, go
, search
, send
が指定できる。
試しに returnKeyType="next"
を指定してみたところ Android では期待通りに動作したが、iOS ではリターンキーが「次へ」という表記にはなるもののキーボードが閉じるという動作になった。
NativeScript の Issue #5086, #2809 にて議論されている通り既知の問題の模様。
上記 Issue Comment 内に nativescript-IQKeyboardManager を使うと良い的な記述があったので試した。
nativescript-IQKeyboardManager も動作しない
tjvantoll/nativescript-IQKeyboardManager は、iOS でよく見る「<
, >
タップで前後フィールド移動するやつ」を表示するプラグイン。
なんだけど Nativescript 6.x support · Issue #68 を見る限り NativeScript 6.x 系は未サポートらしく、実際に入れてみても期待動作にならなかった。
本題: 次フィールドにフォーカスする方法
参考:
- vue.js - How to get element in nativescript using vue? - Stack Overflow
- javascript - NativeScript Vue - set focus on TextField - Stack Overflow
上記ページを参考に、以下のようにすることで解決した。
1 | <template> |
(見ればわかるけど) ざっくり解説。
<Page ref="page">
とするとthis.$refs.page.nativeView
でPage
オブジェクトにアクセスできるようになるreturnPress
イベントにハンドラを設定- Vue なので
@returnPress
- Vue なので
getViewById
で次のTextField
を指定- フィールド識別用に
TextField
にid
を付与しておく
- フィールド識別用に
TextField.forcus()
でフォーカス
まとめ
returnPress
イベントにハンドラを設定- ハンドラ内で
getViewById
とTextField.forcus()
を使って次フィールドにフォーカス
- ハンドラ内で
TextField
のreturnKeyType="next"
は iOS では動作しない- tjvantoll/nativescript-IQKeyboardManager も NatvieScript v6.x 系は未サポートで動作しない
参考文献
- TextField - NativeScript Docs
- TextField - NativeScript-Vue
- vue.js - How to get element in nativescript using vue? - Stack Overflow
- javascript - NativeScript Vue - set focus on TextField - Stack Overflow
- Keyboard hides when moving to next textfield using “next” key · Issue #2809 · NativeScript/NativeScript
- TextField with returnKeyType next is not updating the ScrollView position on returnPressEvent · Issue #5086 · NativeScript/NativeScript
- tjvantoll/nativescript-IQKeyboardManager: NativeScript wrapper for the popular IQKeyboardManager iOS framework
- Nativescript 6.x support · Issue #68 · tjvantoll/nativescript-IQKeyboardManager
関連記事
- NativeScript, JsBarcode でバーコードを 生成/描画
- NativeScript でデバイスの輝度(明るさ)を制御する
- NativeScript で入力範囲外タップでキーボードを非表示にする
- NativeScript で Locale を意識した DatePicker/TimePicker
- NativeScript-Vue でページ読み込み後にページ移動やダイアログの表示
- NativeScript で Dark Mode, Dark Theme 対応
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア