我正在尝试使用locationInView来获取触摸的位置。当我将locationInView打印到控制台时,输出正确的值。但是当我尝试将其分配给局部变量时,该变量永远不会获取值,因此我的其余代码不起作用。此外,这是UIControl的子类。
以下代码段:
override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool
{
NSLog("\(touch.locationInView(self))") // Prints out the correct location
let newPoint = touch.locationInView(self) // Never gets assigned to newPoint
var calculatedIndex: Int?
for (index, item) in labels.enumerate() {
if item.bounds.contains(newPoint) {
calculatedIndex = index
}
}
if calculatedIndex != nil {
selectedIndex = calculatedIndex!
sendActionsForControlEvents(.ValueChanged)
}
return false
}
答案 0 :(得分:0)
我只是在本地运行你的代码,一切正常。您可能会被调试器问题欺骗以显示该值。您可以通过打印newPoint
确认这一点。
至于为什么你的其余代码没有被执行,我建议你检查你的labels
。我认为labels.enumerate
失败了,这让你觉得代码没有被执行。再次尝试打印值而不是依赖于调试器。