我关注了this great tutorial我终于设法实现了一个 3 个独立行的可滚动界面。
不过我还有一个问题,因为该教程的关键是方法的使用:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
NSLog(@"in hitTest");
if ([self pointInside:point withEvent:event]) {
return _scrollView;
}
return nil;
}
即使在 ScrollView 区域之外也能处理滚动。 事实上,我的行中充满了 UIButtons,它们的 TouchUpInside 事件与点击事件混在一起了。有没有办法让这个方法识别这些事件并拒绝它们,让它们传播给合法的委托(delegate)?
最佳答案
您可能应该按如下方式实现 -hitTest:withEvent:
方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *superView = [super hitTest:point withEvent:event];
if (superView == self)
return _scrollView;
return superView;
}
这将允许在 UIScrollView 的 subview 内进行交互。
关于ios - 在 hitTest :withEvent: 拦截 UIControlEventTouchUpInside,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7381717/