【发布时间】:2017-03-27 23:42:59
【问题描述】:
我一直在制作一个使用touchesBegan 方法来接受用户交互的Swift Playground。它与我从互联网上下载的 NewtonsCradle 和其他 Swift Playground 一起运行良好。但我刚刚将我的 Xcode 更新到版本 8.3 并且 NO Swift 游乐场目前正在运行。
我的 Swift Playground 不再接受任何用户输入。 例如,我设置了一个测试视图,当我点击它时“触摸”不打印:
class TestView : UIView {
public init() {
super.init(frame:CGRect(x: 0, y: 0, width: 50, height: 50))
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touched")
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
}
}
var controller = TestView()
PlaygroundPage.current.liveView = controller
PlaygroundPage.current.needsIndefiniteExecution = true
我还尝试运行 NewtonsCradle 代码(针对 Swift 3.0 更新的代码,所以这不是问题),球确实不响应用户交互,它们只是自己摆动。看到这张卡在左上角的照片:
任何人都知道出了什么问题,或者我能做什么?我真的很需要时间来完成这项工作。我也无法回滚到以前版本的 Xcode,因为我需要 Playground 才能使用最新版本。
编辑:我刚刚更新到 MacOS 10.12.4,它仍然坏了。有什么帮助吗?
编辑 2:我已经让其他人确认这是他们的问题。也许其他人也可以确认这一点,如果可能的话,也可以提交一份 Apple 错误报告或提出修复。
【问题讨论】:
-
我目前遇到了同样的问题,过去几天我一直在努力解决这个问题。我认为您需要确保您接受输入的类是
UIViewController的子类。我很确定视图控制器允许在第一次运行后继续执行操作。 -
据我所知,Apple 正在解决这个问题。同时,我建议您降级到旧版本的 Xcode 并使用它,直到它被修复。你可以在这里得到:developer.apple.com/download/more/?name=Xcode
-
@matt 显然这样的事情正在工作,但似乎与用户交互无关。
标签: swift xcode swift3 xcode8 swift-playground