我正在使用xcode创建一个允许用户拖动按钮的视图。使用下面的代码,我可以将按钮移动到触摸并从那里拖动,但我无法单击按钮并拖动。
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 :(得分: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
属性更改此设置。小心不要让它太短 - 一旦手势识别它将取消对按钮的其他触摸,防止按钮动作在触摸解除时被触发。