2016-10-02 1 views
4

UIViewまたはUIViewControllertouchesBegan:withEvent:への最初の呼び出しが、画面の左端をタッチすると遅延する問題が発生しています。これはiOS 10の新たな問題であり、3D Touch(iPhone 6以降)搭載のデバイスでのみ発生します。実際、一般 - >アクセシビリティで3D Touchを無効にすると、問題はなくなります。`touchesBegan:withEvent:`は画面の左端で遅れます

ただし、UIGestureRecognizersを使用すると問題は発生しません。現在のところ、私の回避策はサブクラスを作成してtouches*メソッドをオーバーライドし、それらを古い実装に転送することです。

これは単なるバグですか、遅延を解消する方法はありますか?

答えて

5

これをviewdidappearメソッドに追加してみてください。これにより問題が解決する可能性があります。それも私と一緒に起こったが、私はこの問題を解決したスタックオーバーフローからこのコードを得た。それもあなたを助けることを願っています

let window = view.window! 
let gr0 = window.gestureRecognizers![0] as UIGestureRecognizer 
let gr1 = window.gestureRecognizers![1] as UIGestureRecognizer 
gr0.delaysTouchesBegan = false 
gr1.delaysTouchesBegan = false 
+0

それは私はいくつかのより多くの調査でしたし、これが今の最善の解決策のように思える – Jayson

+0

ラインの下のより多くの問題を引き起こしますよう、私はそれがすぐに問題を解決しますが、システムのジェスチャー認識装置をいじりする方法を参照フムようです。 これらのジェスチャーレコグナイザは '_UISystemGestureGateGestGestureRecognizer'のインスタンスであり、主にコントロールセンターや3Dタッチアプリの切り替えなどのシステムジェスチャでアプリがよりうまくやり取りされるようにするために使用されているようです。左端には、ユーザーがアプリを切り替えようとしたときの誤ったアプリのやりとりを防ぐために遅延が追加されていると思われますが、私の場合は左端で反応する必要があります。ユーザーがアプリを切り替えようとしたとき。 – Jayson

1

私の場合でもPurteeekの解決策はうまくいくようです。

- (void)didMoveToView:(SKView *)view { 

    UIGestureRecognizer* gr0 = view.window.gestureRecognizers[0]; 
    UIGestureRecognizer* gr1 = view.window.gestureRecognizers[1]; 

    gr0.delaysTouchesBegan = false; 
    gr1.delaysTouchesBegan = false; 

} 

これはない、他のジェスチャー認識装置と混乱、およびシステム3Dタッチがまだ正常に動作しない:これはSpriteKitベースのためのObjective-Cの実装です。なぜこれがデフォルトの動作ではないのだろうか。

+0

このパッチはもう機能していません... – alasker

0

私はゲームに取り組んでいます。私が見つけた解決策(現時点では、3D Touchを使ったiPhoneでテストしましたが、現時点では本当の問題でした..)は、ゲーム/アプリの両方で動作します:

UITapGestureRecognizerはこの遅延は、ビューに1つ追加してタップを処理するために使用します。私のゲームでは

、私はタッチを保存し、すべての間隔の更新にそれらを扱うので、私は

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

をオーバーライドし、そこに私はUITouchインスタンスを保存し、NO戻りました。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    [self.touches addObject:touch]; 
    return NO; 
} 
関連する問題