質問

私は(私がボタンとして使用するいくつかのサブビューが含まれています)私の主なビューで無効な相互作用を持っています。

Iは、ネットワークアクティビティ(ロードデータ)を示す第2のビューを有するが

私は、これは無効に保ちます。それが終了すると、私は、一次ビューでの相互作用を有効に再ます。

このは、ネットワーク操作が行われている間ので、ユーザはこれらのボタンをタップしていないです。

とにかく、すべてがうまくようだが、ユーザーは再有効化(過去数秒から)、それらのタッチイベントを発生すると、主要なビューのボタンをタップし始めた場合、実際にトリガします。ないボタンをハイライトタッチ-始めた、しかし、タッチエンドに呼び出される関数。そのようなその全体のそれが無効になっていた時間と「追いつくためにレースを」キューに入れられます。

これはなぜビューは、そのユーザーとの対話が無効になっている間、イベントはキューに入れることが触れるだろう、非常に奇妙なのですか?

役に立ちましたか?

解決

これは、コードを見ずに、ここで答えを確信するのは難しいですが、ここでは1つのアイデアがあります

あなたのネットワークアクティビティが同期している場合は、ブロック別名、それは彼らがあなたのコードのいずれかをヒットするチャンスを得る前に、ユーザーのタッチがキューイングされている場合である可能性があります。その場合は、その後、ネットワークアクティビティが終了するまで、これらのタッチがあなたのレスポンダチェーンに送信されず、彼らはあなたこれらのコントロールと無効対話したいことを「知る」機会を得ることは決してないと思います。

ネットワーク活動を示すのトップ層(あなたが二次ビューと呼ぶもの)に、いくつかのデバッグNSLogステートメントを追加します。

ここでは、あなたの状況をデバッグに役立つ可能性が一つの方法です。二次ビューのフレームは、これらのタッチを含むのに十分な大きさであることを確認し、そしてそれは、すぐに彼らが起こるとしてタッチを記録しますかどうかを確認します。ない場合は、私の推測は正しいかもしれません。はい、まあ、それでも有用な情報を取得する場合 - 。あなたは単に代わりにそれらをキューに入れすることが可能で、このレベルでのタッチをキャプチャすることができるかもしれません。

この推測が正しければ、少なくともハック修正が、私はあなたのネットワークオペレーション非同期を作ることになると考えることができます。

あなたがそれを行うにはしたくない場合は、

、あなたはまた、同期呼び出しが完了した後、第二の分割のためのネットワークアクティビティインジケータを残すためにNSTimerを使用して試みることができます。それは希望の動作だ場合は、この方法では、あなたのレスポンダチェーンが入ってくるタッチのキューをクリアし、それらを無視することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top