[解決済み] テキストフィールドを移動する方法(次へボタン/完了ボタン)
2022-03-19 21:28:27
質問
iPhoneキーボードの「次へ」ボタンで、すべてのテキストフィールドを移動するにはどうしたらよいですか?
最後のテキストフィールドでキーボードを閉じてください。
IB the Buttons (Next / Done)を設定しましたが、今、行き詰っています。
textFieldShouldReturnアクションを実装しましたが、NextボタンとDoneボタンでキーボードが閉じてしまいます。
どうすればいいですか?
Cocoa for Mac OS X では、次のレスポンダチェーンがあり、どのコントロールが次にフォーカスを持つべきかをテキストフィールドに問い合わせることができます。これによって、テキストフィールド間のタブ操作が可能になります。しかし、iOS デバイスにはキーボードがなく、タッチのみなので、このコンセプトは Cocoa Touch への移行後も存続していません。
これは、2つの前提があれば、とにかく簡単にできるのです。
-
すべて"tabbable"です。
UITextField
は同じ親ビューにあります。 - そのタブ順序はtagプロパティで定義されます。
これを前提として、textFieldShouldReturn:をこのようにオーバーライドすることができます。
-(BOOL)textFieldShouldReturn:(UITextField*)textField
{
NSInteger nextTag = textField.tag + 1;
// Try to find next responder
UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder) {
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
} else {
// Not found, so remove keyboard.
[textField resignFirstResponder];
}
return NO; // We do not want UITextField to insert line-breaks.
}
さらにコードを追加すると、前提条件も無視できるようになります。
Swift 4.0
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
let nextTag = textField.tag + 1
// Try to find next responder
let nextResponder = textField.superview?.viewWithTag(nextTag) as UIResponder!
if nextResponder != nil {
// Found next responder, so set it
nextResponder?.becomeFirstResponder()
} else {
// Not found, so remove keyboard
textField.resignFirstResponder()
}
return false
}
テキストフィールドのスーパービューが UITableViewCell である場合、次のレスポンダは
let nextResponder = textField.superview?.superview?.superview?.viewWithTag(nextTag) as UIResponder!
関連
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] UIViewの下に影を描くには?
-
[解決済み】Swiftでキーボードからビューを移動する。
-
[解決済み】iOSのテンキーに「完了」ボタンを表示させる方法は?
-
[解決済み】UITapGestureRecognizerがUITableViewのdidSelectRowAtIndexPathを破る
-
[解決済み】React Native:「next」キーボードボタンを押した後、次のTextInputを選択するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] iOS 13 のフルスクリーンでモーダルを表示する
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] swiftで電子メールアドレスを検証する方法は?
-
[解決済み] ぼかしの入ったオーバーレイビューの作成