Swift 2 - hitTest函数 - 发现致命错误为零

时间:2016-01-21 11:20:11

标签: ios uiview uiscrollview hittest

我在UIView内有一个底栏UIScrollView,里面有两个按钮。我正在使用函数hitTest,以便为两个按钮启用user interaction

代码仅在我触摸底栏时才有效,但当我触摸屏幕的任何其他部分时,应用程序崩溃说:

  

致命错误:在展开Optional值时意外发现nil   (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

    }

}

1 个答案:

答案 0 :(得分:0)

似乎显而易见:super.hitTest返回了nil,但你强行打开它。不要这样做。