实际开发中,常常遇到一些超出父视图的按钮:
例如:
由于 iOS 的特性,超出父视图的部分无法响应 UI 事件。如果想要 Button 能够正常工作。比较好的做法是重写父视图中 -hitTest 方法,遍历到响应事件的视图,将点击的坐标转化到父视图,并返回相应subView。代码如下:
1 | override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { |
在让超出父视图的部分响应点击后,可能按钮还是不好点击,原因是按钮图片太小, 所以要扩大按钮响应时间的范围。
1 | open override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { |
将以上代码加入项目之后,腰也不酸了,腿也不疼了,按钮也好使了 ~~~