2015-10-25 57 views
0

我想要使用locationInView来获取触摸的位置。当我将locationInView打印到控制台时,会输出正确的值。但是,当我尝试并将其分配给本地变量时,该变量永远不会获取该值,因此我的代码的其余部分不起作用。另外,这是UIControl的一个子类。touch.locationInView不分配给本地变量

以下摘录:

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

+0

我怀疑实际发生了什么,记录/打印'newPoint'的输出是什么? – luk2302

+0

我添加了Xcode和调试器的本地和控制台的快照,显示发生了什么。 – bryken

+0

Xcode调试器已知有相当多的错误,请在分配newPoint日志newPoint后添加NSLog语句。 – luk2302

回答

0

我只是跑你的代码在本地,它都能正常运作。您可能被调试器问题欺骗以显示其价值。您可以通过打印newPoint来确认。至于为什么你的其他代码没有得到执行,我建议你检查你的labels。我认为labels.enumerate是失败的,这使你觉得代码没有得到执行。再次尝试打印值而不是依赖调试器。

+0

谢谢。我看到调试器失败了。我也混淆了我的界限和框架,因此没有像我预期的那样正确选择。在那里扔了一对NSLog,并把它全部弄清楚了。 – bryken

+0

很好......我想这个必须被接受的答案。你能接受这一点为了他人的利益吗? – Abhinav