我在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
答案 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
}
}