添加为另一个视图的子视图时未调用touchesBegan方法

时间:2016-06-16 00:40:51

标签: ios swift uiviewcontroller

晚上好。 我有两个ViewControllers(让我们命名为A和B)两个方法touchesBegan覆盖。它以这种方式工作:当点击视图A时,B的视图被添加为A视图的子视图,并且中心位于触摸位置。但是当我点击B(最近添加)的视图时,没有调用B的touchesBegan。我已经在两个视图中将view.enableUserInteraction设置为true,已经不成功地测试了nextResponder()。touchesBegan方法。我究竟做错了什么 ? Obs:我打算添加几个B的视图(宽度= 60,高度= 60)作为A的视图的子视图。

2 个答案:

答案 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()