Swift 2 - hitTest 函数 - 发现致命错误 nil
Swift 2 - hitTest function - fatal error found nil
我在 UIScrollView
中有一个底栏 UIView
,里面有两个按钮。我正在使用函数 hitTest
来为两个按钮启用 user interaction
。
该代码仅在我触摸底部栏时有效,但是,当我触摸屏幕的任何其他部分时,应用程序崩溃并显示:
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
class HelpBarViewClass: UIView {
@IBOutlet var backPageBtn: UIButton!
@IBOutlet var nextPageBtn: UIButton!
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
let subview: UIView = super.hitTest(point, withEvent: event)! // fatal error
return subview == self.nextPageBtn || subview == self.backPageBtn ? subview :nil
}
}
为什么我会遇到这个错误?
更新
感谢下面的回答正确的代码是:
class HelBarViewClass: UIView {
@IBOutlet var backPageBtn: UIButton!
@IBOutlet var nextPageBtn: UIButton!
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
let subview = super.hitTest(point, withEvent: event)
return subview == self.nextPageBtn || subview == self.backPageBtn ? subview : nil
}
}
似乎很明显:super.hitTest
返回了 nil
但你 force-unwrapped 它。不要这样做。
我在 UIScrollView
中有一个底栏 UIView
,里面有两个按钮。我正在使用函数 hitTest
来为两个按钮启用 user interaction
。
该代码仅在我触摸底部栏时有效,但是,当我触摸屏幕的任何其他部分时,应用程序崩溃并显示:
fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)
class HelpBarViewClass: UIView {
@IBOutlet var backPageBtn: UIButton!
@IBOutlet var nextPageBtn: UIButton!
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
let subview: UIView = super.hitTest(point, withEvent: event)! // fatal error
return subview == self.nextPageBtn || subview == self.backPageBtn ? subview :nil
}
}
为什么我会遇到这个错误?
更新
感谢下面的回答正确的代码是:
class HelBarViewClass: UIView {
@IBOutlet var backPageBtn: UIButton!
@IBOutlet var nextPageBtn: UIButton!
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
let subview = super.hitTest(point, withEvent: event)
return subview == self.nextPageBtn || subview == self.backPageBtn ? subview : nil
}
}
似乎很明显:super.hitTest
返回了 nil
但你 force-unwrapped 它。不要这样做。