0

我在 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

4

3 回答 3

1

您必须在视图上启用多次触摸:

self.view.multipleTouchEnabled = true;
于 2015-12-22T14:03:11.337 回答
1

从文档:

多点触控启用

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

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

当此属性为 NO 时,同一窗口中的其他视图仍然可以接收触摸事件。如果您希望此视图专门处理多点触控事件,请将此属性和该 exclusiveTouch属性的值都设置为 YES。

于 2015-12-22T14:06:34.510 回答
0

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

将此代码放在viewDidLoad

let tags = [101, 102]
for v in view.subviews {
    if tags.contains(v.tag) {
        v.multipleTouchEnabled = true
    }
}
于 2015-12-22T14:46:36.710 回答