'UITouch' 类型的值没有成员 'locationInNode'

Value of type 'UITouch' has no member 'locationInNode'

我正在尝试使用 swift2.1 获取触摸位置并出现错误 "Value of type 'UITouch' has no member 'locationInNode'"。

这是我的代码

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    if let touch = touches.first {
        let location = touch.locationInNode(self)
        print(location)
    }
}

我查看了源代码,发现在 class UITouch 中只有 public

func locationInView(view: UIView?) -> CGPoint {
}

我应该使用它还是...?

正如 NicolasMiari 在评论中指出的那样,只有当您使用 SpriteKit 时才有效。 locationInNode() 是一个 SpriteKit 函数,可帮助您找到 SKNode 中的点。

如果您正在使用 "standard" UIKit 来获取视图中触摸的位置,您应该使用 locationInView() 获取视图 (!) 而不是控制器本身。

class ViewController : UIViewController{

  override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    if let touch = touches.first {
      let location = touch.locationInView(self.view)
      print(location)
    }
  }

}