タイトルにあるように、私はiOS5機能のストーリーボードを使用しています。テキストフィールドがあり、タップするとモーダルビュー(ピッカー付き)が表示されます。このアクションはセグエを使用してトリガーできるのだろうか?
ボタンまたはセルがある場合は、Ctrlキーを押しながらドラッグして、表示するコントローラーを表示します。テキストフィールドでも同じことをしましたが、結果は表示されません。押すだけでキーボードだけが飛び出します。モーダルビューは表示されません。私は何をすべきか?
タイトルにあるように、私はiOS5機能のストーリーボードを使用しています。テキストフィールドがあり、タップするとモーダルビュー(ピッカー付き)が表示されます。このアクションはセグエを使用してトリガーできるのだろうか?
ボタンまたはセルがある場合は、Ctrlキーを押しながらドラッグして、表示するコントローラーを表示します。テキストフィールドでも同じことをしましたが、結果は表示されません。押すだけでキーボードだけが飛び出します。モーダルビューは表示されません。私は何をすべきか?
あなたの質問にはいくつかの考えがあります、私はそれらが役立つことを願っています:
をviewController
採用UITextFieldDelegate
する場合は、オプションのデリゲートメソッドを実装しtextFieldDidBeginEditing:
、がファーストレスポンダーになったときに通知を受け取り、モーダルビューコントローラー( UITextFieldDelegateプロトコルリファレンスtextField
)を提示するなど、やりたいことを実行できます。ただし、ファーストレスポンダーになり、キーボードが飛び出すと同時に、モーダルビューも飛び出します。これは、あまりユーザーフレンドリーではありません。textField
ユーザーが選択できる選択肢が限られている場合、なぜ?を使用するのtextField
ですか?
もう1つの方法は、実装するtextFieldShouldBeginEditing:
ことです(ここでも、採用する必要がありますUITextFieldDelegate
)。Appleによると、
ユーザーが通常は編集セッションを開始するアクションを実行すると、テキストフィールドは最初にこのメソッドを呼び出して、編集を実際に続行する必要があるかどうかを確認します。ほとんどの場合、このメソッドからYESを返すだけで、編集を続行できます。
キーボードがreturn NO
ポップしないようにし、代わりにモーダルビューコントローラーをポップします。これを行うには、最初に呼び出しpresentViewController:animated:completion:
てからNO(UIViewControllerクラスリファレンス)を返します。これはテストしていませんが、機能するはずです。
segue
ストーリーボードのsが--thinkof(私は間違っているかもしれません)とUIControlEvent
同等で呼び出されるとどこかで聞いたと思いUIControlEventTouchUpInside
ますUIButton
が、これが本当の場合、UITextField
ファーストレスポンダーになると、それはコントロールイベントではないため、機能しsegue
ません。Weeel、textFieldShouldBeginEditing:アプローチはios8でうまく機能します
ただし、iOS7では一貫して機能しません
textfield.enabled = NOの設定を終了し、uitextfieldを透明なuibuttonでオーバーレイして、VCプレゼンテーションをティガーしました