我制作了一个自定义的拆分视图控制器,并尝试尽可能地模仿标准的。
我拥有的一项功能是,如果设备处于纵向并显示主视图,如果您点击详细信息视图,主视图将隐藏。
我在详细信息视图中使用此代码来完成此操作。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
return [super hitTest:point withEvent:event];
}
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
// Detect touches on the details View and notify the Split View controller
if(point.y != self.touchLocation.y)
{
if (_delegate && [_delegate respondsToSelector:@selector(detailsViewDidTapDetails:)])
[_delegate detailsViewDidTapDetails:self];
}
return [super pointInside:point withEvent:event];
}
我遇到的问题是,如果 detailsView 填充了一个具有自己导航栏的视图,那么在导航栏中按下的任何按钮都会触发上面显示的“详细视图点击”方法。这与添加您放置在导航栏中的“显示详细信息”按钮相冲突。基本上发生的事情是隐藏/显示主视图的方法被背靠背调用两次。
我需要一种方法来忽略“隐藏/显示详细信息”按钮顶部的任何点击。我有一个对按钮的引用,我只需要在我的 hitTest / pointsInside 方法中忽略对它的点击。