我在 UIView
下方有一个 float 的 UINavigationBar
header 。我已将它作为索引 0 处的 subview 插入,因此我可以根据 UITableView
的 contentOffset 对其进行动画处理。
但是,因为它超出了 UINavigationBar
的范围,所以在向其添加 UITapGestureRecognizer
后,我无法在此 View 中接收触摸事件。所有触摸事件都转到其下方的 UITableView
。
如果有可能在导航栏边界之外有一个 subview 并为其接收触摸事件,有什么想法吗?
我这样做是因为将它添加为 UITableView
的 subview ,我必须在滚动时根据 contentOffset 设置 Y 原点,这也使动画变得非常困难,因为 Y 原点在滚动过程中会发生变化,所以我不知道在哪里将其动画化。
它类似于 Facebook 应用中的标题,带有“状态”、“照片”和“签到”按钮。
谢谢
最佳答案
您需要创建自定义 UINavigationBar 并重新实现 pointInside:withEvent:
以扩展导航栏的可触摸区域(添加您的 View 区域):
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
CGRect extendedRect = self.frame;
extendedRect.size.height += MENU_HEADER_HEIGHT - self.frame.origin.y;
BOOL pointInside = NO;
if (CGRectContainsPoint(extendedRect, point)) {
pointInside = YES;
}
return pointInside;
}