2015-08-09 6 views
0

Я работаю с xcode, чтобы создать представление, которое позволяет пользователям перетаскивать кнопки. с приведенным ниже кодом, я могу переместить кнопку на ощупь и перетащить оттуда, но я не могу нажать кнопку и перетащить.xcode swift: как перетащить кнопку?

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) { 

    for obj in touches { 
     let touch = obj as! UITouch 
     let location = touch.locationInView(self.view) 
     word1Button.center = location 
    } 

} 

ответ

0

Кнопки реагируют на событие нажатия, так что, когда пользователь прикасается вниз в пределах одной кнопки вид снизу не будет получать эти события прикосновения. Вы можете обойти это, используя распознаватель жестов на своей кнопке, вместо того, чтобы полагаться на методы доставки сенсорного уровня ниже. Длительное нажатие жест распознаватель вероятно, будет работать лучше всего:

// 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. Будьте осторожны, чтобы не сделать его слишком коротким, хотя, как только распознает жест, он отменит другие нажатия кнопки, не позволяя срабатыванию кнопки при срабатывании прикосновения.

+0

Большое спасибо за ответ! На данный момент я закончил использование imageView с ярлыком поверх. Если позже у меня появятся недостатки, я попробую это. – user4812000

Смежные вопросы