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

时间:2016-01-04 10:21:58

标签: ios swift2 uitouch touchesbegan

我正在尝试使用swift2.1获取触摸位置并获得错误“类型值'UITouch'没有成员'locationInNode'”。

这是我的代码

var myFromDate: NSDate?
var myToDate: NSDate?

let expensesItem: NSObject = (personItem.relToExpenses?.filteredSetUsingPredicate(NSPredicate(format:"(expenseDate >= %@ AND expenseDate =< %@)", myFromDate!, myToDate!)))!


    let expensesTotal = expensesItem.valueForKeyPath("@sum.expenseTotal") as? NSDecimalNumber ?? 0

我查看了源代码,发现在UITouch课程中只有公开

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

是我应该使用的东西还是......?

1 个答案:

答案 0 :(得分:1)

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

如果您正在使用&#34;标准&#34; 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)
    }
  }

}