iphone - 戻らない - スマホ リンク 反応しない




タッチイベントによる遅延 (3)

AppStore Bust〜A〜Spookにアプリがあり、問題がありました。 画面をタップすると、CALayerを使用してアニメーション中のすべてのビューの位置を検索し、ヒットした場合はダイシーケンスを開始します。 しかし、目に見える遅延があります。タッチがバッファリングされているように見えますが、遅くまでイベントを受け取ります。 この遅れ時間を避けるために接触するのにポーリングする方法やより良い方法がありますか?

これはUIScrollViewではなくUIViewにあります


あなたはこれをすべてホストするためにUIScrollViewを使用していますか? そこには、delayContentTouchesというプロパティがあります。 これはデフォルトでYESになります。これは、ビューがスクロールジェスチャであるかどうかを確認することを意味します。 これをNOに設定し、それが役立つかどうかを確認してみてください。


これは季節的なアプリに関するかなり古い投稿ですので、OPはまだこの問題に取り組んでいないかもしれませんが、他の人がこの同じ問題を遭遇してこれが役に立つと思う場合に備えて、

私は、Kriemによると、OpenGLを引き抜く前にCPUのオーバーロードがタッチ処理の大幅な遅延の一般的な原因であることに同意します。 CALayerはここで説明している問題の種類に非常によく最適化されています。

最初に基本を確認する必要があります:

  • メインビューのlayer追加されたCALayers
  • touchesBegan:withEvent:メインビューで実装されています
  • フェーズがUITouchPhaseBegan場合、メインビューのlayer hitTest:を呼び出して適切なサブlayerを検索します
  • ダイシーケンスは、関連するモデルオブジェクトから開始し、レイヤーを更新します。

その後、Instrumentsを使用してパフォーマンスをチェックすることができます。 CPUに過負荷がかからないようにしてください。 シミュレータではすべて正常に動作しますが、デバイスに問題はありますか?

あなたが解決しようとしている問題は非常に一般的なものなので、複雑で複雑な解決策が必要とは思わないはずです。 デザインや実装には基本的な欠陥があり、トラブルシューティングが必要な場合がほとんどです。


ヒットテストと同時にCALayerのコアアニメーションアニメーションを実行している場合は、モデルレイヤの位置が何を反映していないので、 hitTest:呼び出す前にpresentationLayer取得する必要があります画面上に表示されますが、レイヤーがアニメ化されている位置です。

希望が役立ちます。







core-animation