問題タブ [becomefirstresponder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - テキストフィールドを再びファーストレスポンダーにする
UItextFieldオブジェクトがあり、「DidEndOnExit」を「textFieldDoneEditing」アクションにリンクしています。キーボードの[完了]ボタンを押した後、なぜそれが閉じられるのですか?
ios - UIView のキーボードを表示する方法
キーボード入力を受け取りたい UIView があります。私が試してみました:
しかし、うまくいきません。
非表示の UITextField を使用してキーストロークを UIView に転送することで、「汚い」回避策を実装できますが、UIView はどのようにしてキーボード入力を直接受け取るのでしょうか?
objective-c - UITextViewはFirstResponderを再署名しないため、別の人がFirstResponderになることができます
UITextfieldsのinputAccessoryViewにツールバーがあります。「次へ」ボタンを押すと、すべてのテキストフィールドのorderedSet内の次のテキストフィールドが最初のレスポンダーになります。それは完璧に機能します。
しかし、「前の」テキストフィールドをFirstResponderにすることはできません。
コンソールをチェックインし、テキストフィールドがtextFieldShouldBeginEditingを呼び出し、YESを返しますが、textFieldDidBeginEditingを呼び出すことはなく、resignFirstResponderが必要なテキストフィールドがtextFieldShouldEndEditingを呼び出すことはありません。
したがって、テキストフィールドはメッセージをFirstResponderに取得していますが、取得していません。
最も奇妙なことは、それを実行するアクションによってテキストフィールドに強制的にResignFirstResponderを実行すると、「前の」テキストフィールドが突然FirstResponderになることです。レスポンダーのリストに追加されていて、順番になったように…。
objective-c - textFieldDidEndEditing から reloadData を呼び出した後、UITableView に対する indexPath が正しくありません
そこで私は、電話番号を管理するときに連絡先アプリで標準の Apple コードが機能する方法をエミュレートしようとしています。具体的には、テーブルビューが空で、ユーザーが他の行に移動した場合にテーブルビューから行を削除することに取り組んでいます
私の問題は、テーブルビューのリロードにより UITextField がレスポンダーを辞任するため、ユーザーがナビゲートしたテキスト フィールドのレスポンダーを再度設定する必要があることです。
私は UITextField デリゲートを持っており、通常の処理を行っていますtextFieldShouldBeginEditing , textFieldDidBeginEditing , textFieldShouldEndEditing , textFieldDidEndEditing
機能を処理するために、私のコードは内textFieldDidEndEditingにあります。これにより、テーブルビュー配列からデータを削除し、テーブルビューには2つのセクションがあるため、次を呼び出しています:
次textFieldDidBeginEditingを使用して、編集中の textField の indexPath を保存します。
次に、次のコードを使用して、正しい行の textField をファーストレスポンダーに設定します。
処理の終わり近くまではすべて問題ないように見えますが、突然textFieldDidBeginEditingindexPath のセクション 0 行 0 が返され始めます (タグ値または含まれているテキストを調べると、テキスト フィールドの正しい値が返されます)。
以下は、上記で説明したプロセスの開始からのログです。
ログの最後の部分からわかるように、textFieldDidEndEditing完了後にtextFieldDidBeginEditingが呼び出されますが、セクション 0 と行 0 が返されます (行はずっと表示され、表示されたままになります)
これが呼び出される理由も、正しい indexPath が返されない理由もわかりません。ご覧のとおり、テキストが値 (この場合は入力された値 123) に対して返され、他のデータと他の行 (テキスト フィールドのテキストとタグの両方) でこれを確認しました。
becomeFirstReponsderwithinの設定textFieldDidEndEditingが間違っているのかもしれませんが、それが本当なら、これをどこで処理するか途方に暮れています
これをよりよく理解している誰かが私を助けてくれることを願っています.
ありがとうイジー
EDIT 1: コードでは、呼び出されるのはすべて完了becomeFirstReponderする前です。textFieldDidEndEditingが完了した後にログを見ると、cellForRowAtIndexPath削除されたばかりの行の下にあった行に対して 1 回、次に indexPath のセクション/行に対して 0 を返すときに、テキストフィールドに 2 回入力して存在します。このポスト テーブル リロード メソッドの起動を引き起こしているイベントのシーケンスを理解できていません
EDIT 2: それは私だけですか、それともログの最後にtextfieldSHOULDbeginEditingNOがないのは本当に奇妙に思えますか? textFieldDidBeginEditing中にテーブルをリロードして内部プロセスを台無しにしているのtextFieldDidEndEditingですか?これを行うためのより良い場所はありますか (つまり、行を削除し、テーブルビューをリロードして UI の更新を表示します)?
ipad - MKMapView のフレームを設定すると、resignFirstResponder が発生しますが、分割キーボードを使用したランドスケープの iPad でのみ発生します。
これは少し奇妙で、一体何が起こっているのかわかりません。カスタム注釈が付いた MKMapView を使用しています。その注釈には、編集可能なテキスト フィールドがあります。ユーザーがフィールドをタップすると、キーボードが表示され、マップ ビューを移動/縮小し、注釈を中央に移動することで応答します。分割キーボードを備えたランドスケープ モードの iPad を除いて、すべて問題ありません。この状況でのみ、マップ ビューのフレームを変更すると、テキスト フィールドで「resignFirstResponder」が呼び出され、画面外でキーボードのアニメーションが開始されます。画面外に移動されると、コードはマップビューを移動/拡張してスペースを埋めることでそれに対応します。次に、テキスト フィールドがbecomeFirstResponder再びメッセージを受け取ります。コールスタックを確認しましたが、これは次のものから来ています:[UIView(Hierarchy) deferredBecomeFirstResponder]. キーボードが元に戻り、これに再び応答すると、上 -> 下 -> 上 -> 下 -> 上 -> 下...というサイクルが続きます。これresignFirstResponderは間違いなく、マップ ビューのフレームを設定することから来ています。テキスト フィールドにブレークを設定しresignFirstResponder、コール スタックを確認すると、前の呼び出しがマップ ビュー フレームの設定です。また、キーボードが閉じられたときにキーボードに応答するコードを壊すと、マップ ビュー フレームが設定された直後にスタックにこれらの呼び出しがあることに気付きます。
マップ ビューのサイズを変更しないことで、これを回避できます。そうしないとサイクルが始まらない。代わりに、マップビューをコンテナービューに配置し、コンテナービューに設定clipToBounds = YESし、マップビューで自動サイズ変更を行わない場合、コンテナービューのサイズを変更して、マップビューを同じサイズのままにすることができます....問題は、それが回避策。ユーザーが iPad を回転させた場合、マップ ビューのサイズを変更する必要がありますが、それによってこの醜いサイクルが始まります。
何が起こっているのか知っている人はいますか?
objective-c - becomeFirstResponder を呼び出した後に shouldChangeCharactersInRange メソッドが呼び出されない
こんにちは、iOS初心者です。
私は自分のプロジェクトでいくつかのテキスト フィールドを使用しているので、いずれかのテキスト フィールドの編集にbecomeFirstResponderを使用したいと考えています。xcode 3.2.5では問題なく動作していますが、 xcode 4.2.1では問題が発生します。
Xcode 4.2.1では、 becomeFirstResponderを呼び出した後、テキスト フィールドを編集できませんでした。仮想キーボードが表示され、キーをタップできましたが、タップされたキーはテキスト フィールドに入力されません。
私を助けてください。
ios - uitextf の切り替え時にキーボードが消えるのを止める
私は、1 つのセクションと 5 つのセル、および各 tableCell に 2 つの異なる uitextfields を持つ uitableview を使用しています。
私の問題は、ユーザーが最初のテーブル行の最初のテキストフィールドをタブで押すと、キーボードが表示され、ユーザーが2番目のテキストフィールドをタップすることです。キーボードのDISMISSとSHOW。
ユーザーがテキストフィールドにフォーカスを切り替えるときに、DISMISS と SHOW の代わりにキーボードを維持するにはどうすればよいですか?
ありがとう。
最初の編集: これに関する応答が遅くなって申し訳ありません。コードはここに表示するのが少し複雑です。textField デリゲート メソッドのいずれかで、resignFirstResponder/becomeFirstResponder を使用しません。あなたの頭の上に何かアイデアを投げ込んでいただけますか?ご助力いただきありがとうございます。
2番目の編集: 私の悪い間違いで申し訳ありません。私は自分の問題を完全に誤解していました。すぐに新しい投稿をここに再リンクします。
3番目の編集: これは私の新しい質問です
uitextfield - UITableView内の次のtextFieldに移動する
サブクラス化されたtextFieldsでいっぱいのtableViewがあります。以下は私がそれらを作成した方法です:
ユーザーが[次へ]ボタンをタップしたときに次のテキストフィールドに移動する方法がわかりません。通常、次のテキストフィールドを最初のレスポンダーにする必要がありますが、すべてのテキストフィールドの名前が「myTextfield」であるため、その方法がわかりません。助けてください!
iphone - ビューの非表示を解除すると、becomeFirstResponder によってアプリが遅くなる
これは、この問題のフォローアップのようなものです: becomeFirstResponder がアプリを遅くする
そのポスターと同じ問題が発生しています。つまり、becomeFirstResponder を呼び出すと、アプリの速度が低下するようです (おそらく 1 ~ 2 秒間ハングします)。ただし、彼らはアラートの表示と組み合わせて呼び出していましたが、非表示のビューを再表示して、最初のレスポンダーとして特定のフィールドで表示しようとしているだけです。何かのようなもの:
dialogView には、dialogText (ファーストレスポンダーとして設定しようとしている UITextField) とその他の項目を含む階層があります。
この遅さは、このコードが最初に実行されたとき、つまり、このダイアログを初めて開こうとしたときにのみ現れます。その後の試みでは、明らかな遅さはありません (これは、dialogText がその時点ですでにファーストレスポンダーになっているためだと思います。resignFirstResponder をどこにも使用していませんか?)
編集:ここにコンテキスト用の追加コードがありますが、実際にこれ以上光を当てるかどうかはわかりません. このダイアログ ビューの再表示をアニメーション化していますが、動作に違いはありません。また、becomeFirstResponder 呼び出しを完了ブロック (ここのコードには反映されていません) に移動して、少なくともダイアログの表示が遅れないようにしましたが、ダイアログの表示とキーボードの表示の間にはまだ遅延があります。
objective-c - カスタム UITableViewCell 内の複数の UITextField
2 つの異なる customcell 定義を持つ UITableView があります。1 つは単一の UITextField で、もう 1 つは 4 つの UITextField です。
userInteractionEnabled は、セル レベルのタッチ ナビゲーションを有効にするように手動で設定され、関連するセルへの最初のレスポンダーへの didSelectRowAtIndexPath 内の UI インタラクションを処理します。
1 つの UITextField (editableTextField) で 1 つの customcell (EditableCustomCell) だけを使用していたとき、これはすべて正常に機能しましたが、今では 4 つの UITextField (度、分、秒、デカルト) を持つ customcell (LatLonCustomCell) があり、どのフィールドがbecomeFirstResponder を設定するために触れられました
(現在、デバッグ中に度と呼ばれる最初のテキストフィールドでデフォルト設定しています)
}