SwiftにUIPanGestureRecognizerを使用した場合、私は奇妙なケースがあります。 私はパンのジェスチャーを処理し、他のジェスチャーがパンと干渉しないようにUIGestureRecognizerDelegateに "false"を指定する関数を持っています。recognizer.location(in:recognizer.view)は、スウィフトでポイント0を返します。
ここで問題の場合は次のとおり
- ユーザが1本の指でタッチし、
- ユーザーのパンを開始する画面上の第2の指を置く - 第二のフィンガが無視さ
- ユーザが最初に指を持ち上げます2番目はまだ触っています - この時点で私のハンドラは
recognizer.state == .ended
で呼び出されます。問題は、私はrecognizer.location(in: recognizer.view)
を呼び出すことによって取得し、この時点での場所は(、(0,0)
アム私はポイントを得るために間違った方法を使用してポイントを返すということです?第二指が完全に無視されますので、ということらしいです最初の指は、通常のパンのように振る舞うべきではない、と状態が==終わったとき、私は場所を得るでしょう、私はちょうどそれをテスト
利用できないと文書化されていますか?私はあなたが解決策として言ったことを使用しましたが、それがベストプラクティスであるかどうか疑問です – gbehar
UIGestureRecognizerをチェックすると、その情報を取得する唯一の方法です(タッチはありません):にアクセスできます - 私はそれがUIViewに属していると思っています。それは私が気づいていないことをするためには、より巧妙な方法かもしれません。 –
solenoid
UIViewは、独自のオーバーライドfunc touchesEnded(_タッチ:イベントを設定します。 – solenoid