ボタンとタッチ移動ジェスチャのあるビューがあります。ユーザーがボタンをタッチすると、ボタンが選択され、タッチ移動イベントを受信し続けます。タッチ移動でボタンの選択を解除し、ジェスチャーに移動を渡します。
ボタンのタッチ受信を「エレガントに」キャンセルするにはどうすればよいですか?
ボタンとタッチ移動ジェスチャのあるビューがあります。ユーザーがボタンをタッチすると、ボタンが選択され、タッチ移動イベントを受信し続けます。タッチ移動でボタンの選択を解除し、ジェスチャーに移動を渡します。
ボタンのタッチ受信を「エレガントに」キャンセルするにはどうすればよいですか?
Swift4で次のコード行を試してください
youButton.touchesCancelled([], with: nil)
パンジェスチャレコでうまく機能します
UIGestureRecognizerDelegateを実装する必要があります。具体的にはこの方法。次に、ジェスチャがタッチを受け取るかどうかを決定するためのロジックを構築します。NOを返すと、ボタンをつかむためのタッチがアップします。YESを返すと、タッチするジェスチャが返されます。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
これ以上制御できない場合は、ボタンをサブクラス化してヒットテストを引き継ぐ必要があると思います。