touch.locationInView不分配给局部变量

时间:2015-10-25 14:18:46

标签: ios iphone swift

我正在尝试使用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
}

Debugger and local variables
Debugger and local variables

1 个答案:

答案 0 :(得分:0)

我只是在本地运行你的代码,一切正常。您可能会被调试器问题欺骗以显示该值。您可以通过打印newPoint确认这一点。

至于为什么你的其余代码没有被执行,我建议你检查你的labels。我认为labels.enumerate失败了,这让你觉得代码没有被执行。再次尝试打印值而不是依赖于调试器。