2017-11-14 7 views
1

私はサブクラス化されたUIGestureRecognizerを追加したUIViewを持っている状況にあります。私は次のコードを使用しています。UIGestureRecognizerとUILongPressGestureRecognizerをサブクラス化する

class ButtonGestureRecognizer: UIGestureRecognizer { 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) { 
    // 
    state = .began 
    } 

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent) { 
    // 
    state = .ended 
    } 
} 

これは私がリリースされたとき、それが戻って通常のサイズに押されたときに、私はUIView大規模に使用しています「ダウン」タッチ「アップ」とタッチイベントを、キャプチャすることができます。

また、同じビューには、UILongPressGestureRecognizerを追加する必要があります。また、押されたときにスケールアップされ、リリース時に通常のサイズに戻りますが、別のアクションを実行します。

しかし、サブクラス化されたジェスチャー認識ツールは、UILongPressGestureRecognizerの動作を妨げているようです。私が今までに見つけた唯一の解決策は、サブクラス化されたジェスチャ認識器をあきらめ、UITapGestureRecognizer(最小タップを1に設定する必要があります)とUILongPressGestureRecognizerを使用していますが、タップ/終わりの状態。

これはどうしてですか?ありがとう!

答えて

1

プロトコルがありますがUIGestureRecognizerDelegateと呼ばれ、それはあなたがそのプロトコルに準拠して、認識装置の代理人としてあなたのオブジェクトを設定した場合、あなたはその方法にtrueを返し、あなたのジェスチャー認識機能することができ、この方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 

をします持っています共に働く。

+2

ありがとうございます。私はこの方法を知らなかった。 'UIView'を' UIGestureRecognizerDelegate'プロトコルに準拠させ、参照メソッドを追加し、 'UIView'をデリゲートに設定しました。 – ZbadhabitZ

関連する問題