【问题标题】:How to respond to touches when the view is already pressed?当视图被按下时如何响应触摸?
【发布时间】:2015-12-22 13:58:03
【问题描述】:

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

【问题讨论】:

  • multipleTouchEnabled 属性是否设置为true?
  • 是的,在viewDidLoad 我有view.multipleTouchEnabled = true。

标签: ios swift uiview uitouch uievent


【解决方案1】:

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

self.view.multipleTouchEnabled = true;

【讨论】:

    【解决方案2】:

    来自文档:

    multipleTouchEnabled

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

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

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

    【讨论】:

      【解决方案3】:

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

      把这段代码放在viewDidLoad:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        相关资源
        最近更新 更多