最近遇到一个问题,在tableView的分区头放置了一个筛选框,点击筛选后弹出的界面超出了父视图的尺寸,不可点击,最后找到两个方法
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
在父视图中重写这两个方法,就可以对超出尺寸的子视图进行操作了
// 这个方法是根据触摸的点来判断是否在view的范围内
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
// 返回一个view来响应事件
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
下面贴上我的代码,仅供参考
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
return YES;
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* view = [super hitTest:point withEvent:event];
if (view == self) {
if (!CGRectContainsPoint(self.bounds, point)) {
return nil;
}
}
return view;
}
为了方便理解,附上我参照的一篇文章地址