Кнопки реагируют на событие нажатия, так что, когда пользователь прикасается вниз в пределах одной кнопки вид снизу не будет получать эти события прикосновения. Вы можете обойти это, используя распознаватель жестов на своей кнопке, вместо того, чтобы полагаться на методы доставки сенсорного уровня ниже. Длительное нажатие жест распознаватель вероятно, будет работать лучше всего:
// Where you create your button:
let longPress = UILongPressGestureRecognizer(target: self, action: "handleLongPress:")
word1Button.addGestureRecognizer(longPress)
//...
func handleLongPress(longPress: UILongPressGestureRecognizer) {
switch longPress.state {
case .Changed:
let point = longPress.locationInView(view)
button.center = point
default:
break
}
}
Обратите внимание, что по умолчанию, UILongPressGestureRecognizer
нужно пользователю, чтобы удерживать в течение 0,5 секунды до того, как жест начинает распознавать (и, следовательно, начинает тянуть). Вы можете изменить это с помощью minimumPressDuration
объекта UILongPressGestureRecognizer
. Будьте осторожны, чтобы не сделать его слишком коротким, хотя, как только распознает жест, он отменит другие нажатия кнопки, не позволяя срабатыванию кнопки при срабатывании прикосновения.
Большое спасибо за ответ! На данный момент я закончил использование imageView с ярлыком поверх. Если позже у меня появятся недостатки, я попробую это. – user4812000