userInteractionEnabled
- (void)touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event
- (void)touchesMoved:(NSSet *) touches withEvent:(UIEvent *) event
- (void)touchesEnded:(NSSet *) touches withEvent:(UIEvent *) event
- (void)touchesCancelled:(NSSet *) touches withEvent:(UIEvent *) event
上面三个方法就会显示触摸的地方,可以在里面进行响应的操作
touch事件同时只能给一个对象,那么控制touch事件分配的对象也是一个难点了
首先touch事件响应的优先级就是界面的层次,在最上层不响应的时候就会传递给下层
当点击一个区域,想把想把事件传递下去,其他区域拦截事件的时候又是一个问题了
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
这个方法可以很好的解决问题,当返回NO的时候就可以传递下去,返回YES的时候当前对象接受点击事件
CGRectContainsPoint(CGRectMake(0, 0, 40, 40), point);
经常配合这个方法来判断触摸点是否在CGRect内;
PPLAbel 如果不是在链接内就下层响应事件
- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event{
for (NSTextCheckingResult *matchin self.matches) {
CFIndex index = [selfcharacterIndexAtPoint:point];
if ([selfisIndex:index inRange:match.range]) {
returnYES;
}
}
returnNO;
}