如何在按下视图时响应触摸?

时间:2015-12-22 13:58:03

标签: ios swift uiview uitouch uievent

我在ViewController中有两个视图,在触发时执行特定的操作。如果我用一根手指按住其中一根并用另一根手指触摸同一个视图,则没有任何反应。 " ok"以下测试不会出现。

我重写方法touchesBegan来执行操作:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    print("ok")
    if let touch = touches.first{
        let viewTag = touch.view!.tag
        if viewTag == 101 {
            // my action for view 1
        } else if viewTag == 102 {
            // my action for view 2
        }
    }
    super.touchesBegan(touches, withEvent: event)
}

修改

我已经在使用multipleTouchEnabled = true

3 个答案:

答案 0 :(得分:1)

您必须在视图中启用多个触摸:

self.view.multipleTouchEnabled = true;

答案 1 :(得分:1)

来自文档:

<强> multipleTouchEnabled

  

一个布尔值,指示接收器是否处理   多点触控事件。

     

当设置为YES时,接收器接收与a相关的所有触摸   多点触控序列。设置为NO时,接收器仅接收   多点触控序列中的第一个触摸事件。 默认值   此属性为否

     

同一窗口中的其他视图仍然可以在接收时触摸事件   这个属性是NO。如果您希望此视图处理多点触控   事件独占,设置此属性和值的值   exclusiveTouch属性为YES。

答案 2 :(得分:0)

必须在两个视图中设置multipleTouchEnabled = true,而不仅是主视图。

将此代码放入viewDidLoad

let tags = [101, 102]
for v in view.subviews {
    if tags.contains(v.tag) {
        v.multipleTouchEnabled = true
    }
}