晚上好。 我有两个ViewControllers(让我们命名为A和B)两个方法touchesBegan覆盖。它以这种方式工作:当点击视图A时,B的视图被添加为A视图的子视图,并且中心位于触摸位置。但是当我点击B(最近添加)的视图时,没有调用B的touchesBegan。我已经在两个视图中将view.enableUserInteraction设置为true,已经不成功地测试了nextResponder()。touchesBegan方法。我究竟做错了什么 ? Obs:我打算添加几个B的视图(宽度= 60,高度= 60)作为A的视图的子视图。
答案 0 :(得分:2)
这是因为触摸事件由A响应。当B显示时,您应该关闭A的用户交互。
<强>更新强>
试试这个:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0.01) {
for (UIView *subview in self.subviews.reverseObjectEnumerator) {
CGPoint subPoint = [subview convertPoint:point fromView:self];
UIView *result = [subview hitTest:subPoint withEvent:event];
if (result != nil) {
return result;
}
}
}
return nil;
}
答案 1 :(得分:0)
您有两个视图还是两个viewControllers?当您触发加载视图&#34; B&#34;在您的视图对象上调用.becomeFirstResponder()
。