UIView范围外的点击事件响应

大家都知道UIView继承自UIResponder,所以可以相应一系列的事件,但有时子视图控件超出了自身父视图的范围这时候就无法响应事件了,如果想要子视图响应事件就需要另寻他法了。

子视图相应事件的范围

一个子视图被添加到父视图后,每次在屏幕上的点击事件都会触发一条响应链来逐层判断该由哪个视图来响应事件。一个子视图添加到一个父视图后,其响应范围就是父视图的bounds,如果子视图的bounds超出了父视图则超出部分就会被相应链判断为不能响应而抛弃超出区域bounds的响应事件。默认情况下,子视图超出父视图bounds外部分是会显示在父视图上的,但是UIView有一个property属性叫做clipsToBounds,这个Boolean属性的值决定了父视图的子视图是否被限制在父视图的边界内,在默认情况下这个值是NO,所以即使在父视图中添加的子视图即使超出了父视图的边界也是可见的。但如果将clipsToBounds设置为了YES,那么在父视图中添加的子视图超出了父视图的边界就是不可见的了。