2016-08-26 2 views
1

私のアプリでは、上向きスワイプを検出したいと思います。もちろん、私はUISwipeGestureRecognizerをビューコントローラのviewに追加しました。スワイプは検出できますが、エッジからスワイプは検出できません。

期待通り、この認識装置はスワイプを非常にうまく検出します。しかし、これに関する悪いことは、下端からのスワイプも検出されることです。とき、ユーザーは、コントロール・センターをオープンしたい:

enter image description here

スワイプも検出されました。私はこれが起こることを望んでいない。

他の言葉で言えば、画面の下端からのスウィープを除くすべてのスワイプを検出したいとします。

私はUIEdgePanGestureRecognizerを使ってエッジスワイプを検出できると思います。このようなスワイプが検出されたら、スワイプ認識機能を無効にします。しかし、これは間違いなく可能ですか?どのレコグナイザが最初にジェスチャを検出するのか、誰が知っているのでしょうか?

どうすればいいですか?

P.S.私はrequireGestureRecognizerToFailを使う必要があると思うが、ドキュメントはとても悪いので、私は完全に理解できない。

答えて

0

偶発的なコントロールセンターの開口部が存在しないようにステータスバーを隠すことができます。これにより、ユーザーが下からスワイプすると矢印が表示されます。まだユーザーがコントロールセンターを開こうとしている場合は、再度スワイプする必要があります。

override func prefersStatusBarHidden() -> Bool { 
return true 
} 

以下

てみてくださいコードは、このためのもう一つの解決策がありますが、私はAppleがこれを怒っているかどうかわかりません。

.plistには、 "View Controller-based status bar appearance"という名前の値があります。

optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, 
shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool 

あなたはこのデリゲートメソッドを使用する必要があります。この場合、NO

+0

これは別の質問に対する回答ですか? – hybridcattt

+0

いいえ、意図的です。この方法では、ユーザーはコントロールセンターを見ることができず、スワイプの操作はうまくいく。 – batgun

+0

@ batgunの答えがうまくいけば、試してみることができる。 – Yahoho

0

に設定してくださいチェックotherGestureRecognizer、あなたはあなたの認識器はそれと同時に発射したくない場合はNOを返します。

これを試して、システムが回避しようとしているジェスチャー認識子でこのメソッドを呼び出すかどうかを確認してください。そうでない場合は、代わりに​​をUIRectEdge.Bottomと追加して確認してください。

+0

私はそれを試みましたが、これは時々動作しますが、ときどき動作しません。なぜなら、時々、エッジパンレコグナイザをトリガーせずにコントロールセンターを開くことができるからだと思います。 – Sweeper

+0

はい、そうかもしれません。しかし、あなたのスワイプのジェスチャーはその場合にはまだ発砲しますか? – hybridcattt

+0

はい。エッジの少し上からスワイプを開始すると、コントロールセンターを開くことができます。 – Sweeper

関連する問題