在View Controller中我正在构建一个图标网格。 每个图标都会打开相同的弹出视图,但会填入不同的信息。
我正在以这种方式创建网格:
for (int i=0; i<NUM_BADGES; i++) {
BadgeThumbView *thumb = [[BadgeThumbView alloc] initWithFrame:CGRectMake(posX, posY, 70, 100)
andWithLabel:[NSString stringWithFormat:@"BADGE NAME N. %d", i]];
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onBadgeTapped:)];
[thumb addGestureRecognizer:gestureRecognizer];
[thumb setTag:i];
[more code here....]
}
在onBadgeTapped方法中,我正在创建弹出窗口。 现在我的问题是一切正常,但我刚刚意识到,当弹出窗口打开时,在与按钮交互时,我仍然在底层视图控制器中触发手势识别器。
有没有办法在基础视图中禁用所有GestureRecognizers?我的策略错了吗?并且:有没有办法为我的所有图标使用单个UIGestureRecognizer,以便更容易地禁用/启用?
非常感谢
答案 0 :(得分:1)
您可以从视图中删除识别器或设置userInteractionEnabled以暂时禁用它。根据弹出窗口的实现方式,您可以一次性禁用它们。
一种解决方案是添加拇指作为容器UIView的子视图,并将该容器添加到父视图中。然后,您可以通过在容器视图上设置userInteractionEnabled来启用/禁用所有。
答案 1 :(得分:0)
我认为你应该做一些事情,比如在出现弹出窗口时禁用所有拇指视图的userInteraction,并在这样消失时重新启用
[[yourSuperView subviews]makeObjectsPerformSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:FALSE]];
否则将所有thumbViews添加到一个子视图(比如'b')然后将视图'b'添加到superview(比如'a')作为subView,并在弹出窗口出现时关闭用户交互以查看b
并转向当弹出消失时