問題タブ [responder-chain]
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.
ios - どの子がファーストレスポンダーのステータスを持っているかをiOSビューに尋ねる方法はありますか?
Mac OS Xでは、次のようなファーストレスポンダーを見つけることができます。
iOSでそれを行う方法はありますか?isFirstResponder
または、子コントロールを列挙して、それぞれにメッセージを送信する必要がありますか?
ios - viewDidLoad を追加しても IBAction が起動しない
UIButton に複数の IBAction がアタッチされています。次のコードを追加するまで、IBActions は正常に動作します。
そのコードのチャンクを追加した後、IBActions は起動しません。UIButtons に触れると強調表示されますが、IBAction コードはヒットしません。
ここに私の addGestureRecognizers コードがあります:
singleFingerTap コードをコメントアウトすると、機能します。doubleFingerTapで以前に割り当てたことがあるので、allocを使用すべきではないと思いますか?
ここで何が欠けているかについてのアイデアはありますか?
ios - レスポンダー チェーンを使用して、サブビューがいつ追加されたかを確認する
サブビューのサブビューが追加されたことをウィンドウが通知する方法はあります。ビュー階層をバブリングする一種のイベントを許可するアーキテクチャが(レスポンダーチェーンの形で)配置されているようですが、これはユーザーインタラクションを処理するためにのみ存在するようです.UIViewは追加時にあらゆる種類のイベントを発行しますかそのスーパービューに?サブビューがその子孫ビュー階層内のどこかに追加されたことをウィンドウが知る方法はありますか?
ios - UITableViewヘッダービューをレスポンダーチェーンのテーブルセルの前に表示するには?
テーブル ビューの上にかなり大きなテーブル ヘッダー ビューがあります。そのヘッダー ビューには多数のサブビューがあります。テーブル ビューの上部に、これらのサブビューの一部 (すべてではない) を「貼り付ける」という、少し非標準的なことを行っています。
私の問題は、テーブル ビュー セルがスティッキー テーブル ヘッダー サブビューの下を視覚的に通過するにもかかわらず、テーブル ビュー セルがタッチ応答に関してテーブル ヘッダー ビューの「上」にあるように見えることです。(例:テーブルヘッダービューのサブビューであるボタンがあります。ボタンの下にセルがない場合、ボタンはうまく機能し、タッチに反応します。しかし、ユーザーがセルがあるようにテーブルビューをスクロールするとボタンの下で、ボタンに触れると、実際にはボタンを押すのではなく、非表示のセルが選択されます。)テーブルヘッダービューをテーブルビューセルの上に「持ち上げる」方法について、誰でもアドバイスを与えることができます。取り扱い?
一部のサブビューのみを固定したいという事実のために、セクション ヘッダー ビューではなくテーブル ヘッダー ビューを使用しています (他のサブビューは通常どおり画面からスクロールアップさせます)。サブビューの 1 つも拡張できます (その拡張はアニメーション化されます) - 画面全体の高さよりもさらに大きな高さまで。これらの理由から、セクション ヘッダー ビューを使用することは現実的ではないと思いました。(そうである場合は、私に知らせてください。タッチ応答に関しては、セクション ヘッダー ビューがテーブル セルの「上」にあることを知っています。)
cocoa - keyDown: が呼び出されているときに tryToPerform:with: が呼び出されない
呼び出してNSViewController
手動でレスポンダーチェーンに入れました
ユーザーがビュー内でキーを押すと、keyDown:
メッセージを正常に受信できます。ただし、何らかの理由で、ユーザーが MainMenu バーにアクセスしたときにメッセージを受信tryToPerform:with:
していません。validateMenuItem:
ここで何が欠けていますか?
objective-c - イベント touchesForView: スーパー ビューで null を返します
次のように touchesMoved をオーバーライドする BigView という UIView のサブクラスがあります。
私の BigView インスタンスにはサブビュー (通常の UIView インスタンス) もあります。そのサブビュー内に触れると、上記のtouchesMoved
メソッドが呼び出されますがviewTouches
、null になります。touchesBegan
サブビューは、イベント処理メソッド ( 、touchesMoved
など)をオーバーライドしません。ビューのタッチ カウントには、そのサブビュー内のすべてのタッチが含まれることが期待されますが、そのようには機能していないようです。コードで何か間違ったことをしているのですか、それともこれが動作するはずの方法で、理由がわかりませんか? (後者の場合、なぜこれが良いのですか?)
ありがとうございました!
macos - IBの2つのnsbutton間にレスポンダーチェーンを設定します
ウィンドウに2つのnsbuttonがあります。ユーザーがタブを押すと、フォーカスが次のボタンに移動するように、これら2つのボタンをリンクする必要があります。
レスポンダーチェーンがどのように機能するかを知っています。私の質問は、InterfaceBuilderでこれを行う方法です。助けてください。
cocoa - クローズ ボックスで NSPanel を Escape キーで閉じないようにする
NSPanel
キーウィンドウのときにエスケープキーが閉じないようにする最良の方法を知っている人はいますか? 私のパネルは子ウィンドウであり、ウィンドウの半永久的な部分のように、引き出しのように動作するようにしたいのですが、その中のテキスト コントロールについては、Escape キーで編集をキャンセルしたいと考えています。
最近、Cocoa のドキュメントで Windows と Escape キーに関する詳細を見つけました。NSResponder クラス リファレンスでcancelOperation:
は、「ウィンドウがデフォルトのアクション メッセージをcancelOperation:
最初のレスポンダーに送信し、そこからメッセージがレスポンダー チェーンを上っていく」と書かれています。の場合は異なるようで、最初の応答者が呼び出しを取得したり、NSTextView デリゲートが呼び出しを取得したりNSPanel
することなく、ウィンドウが閉じます。cancelOperation:
doCommandBySelector:
レスポンダチェーンの出入りに関する私の知識は、私がこれまでずっと OS X の仕事をしてきたことを考えると恥ずべきことです。サブクラスで通常のウィンドウのように動作keyDown:
させる必要があると考えていました。and can catchNSPanel
をオーバーライドして、呼び出しを ではなく に転送しようとしましたが、変更はありませんでした。Escape は、最初の応答者へのメッセージなしでウィンドウを閉じました。それは試してみても合理的でしたか?NSPanel
keyDown:
NSWindow
keyDown:
super
次に、パネルのサブクラス ' を完全に再実装してkeyDown:
、次のようにしました。
これにより、テキスト フィールドが通常どおりにエスケープを処理できるようになると思います。また、テキスト フィールドが最初のレスポンダーではない場合、呼び出しは行き止まりになる可能性があります。しかし、試してみると、パネルは以前と同じように閉じます。明らかに、私は適切なレベルで物事を傍受していません。
cancelOperation:
低レベルのキー押下イベントとパネルのクローズの間に実行される一連のメソッド、またはそれをインターセプトしてファーストレスポンダーに確実に送信するためにオーバーライドする必要があるものを誰かが知っていますか?
ios - ストーリーボード エディタの「First Responder」ボックスと「Exit」ボックスの目的は何ですか?
XCode IDE では、MainStoryboard エディターのビュー コントローラーの下部に、First Responder と Exit の 2 つのボックスがあります。
コード内でプログラム的に firstResponder が何であるかは知っていますが、ストーリーボード エディターでは、それによって役立つことは何もできないようです。
この領域のファーストレスポンダーを使用して、ビューのファーストレスポンダーを設定することはできますか? ロード時に最初のテキストフィールドをアクティブにしたいのですが、右クリックしてドラッグしようとしましたが、役に立ちませんでした。viewDidLoad メソッドでプログラムで設定できることは知っていますが、ここでそれを行う方法はありますか?
そして、緑の出口は何のためですか?
ios - UIGesture は、カスタム ビューではなく UIImageView を返します
rootview にカスタム ビューを追加し、UITapGesture を追加しました。UITapGesture コードの「sender.view」を呼び出すと、カスタム UIView では表されなくなり、代わりに「sender.view」が UIImageView 型になります。
そのため、iOS が UIView を予期しているときに、カスタム ビューにメッセージを送信するのが本当に難しくなります。「互換性のないポインター タイプが UIView をパラメーター CardView (カスタム ビュー) に送信しています。
それは一連の反応に関係していると思います。ドキュメントには、「iOS がイベントを認識すると、タッチが発生したビューなど、そのイベントの処理に最も関連性が高いと思われる最初のオブジェクトにイベントが渡されます」と記載されています。- iOSのイベントについて
ここでのキーワードは「思われる」です。カスタム ビューがジェスチャを処理する必要があることを iOS に伝えるにはどうすればよいでしょうか。
質問: sender.view でカスタム ビューを直接参照するにはどうすればよいですか?
以下にいくつかのコードを示します。