这里给出一个示例,(使用ARC)

        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)];

        [subView1 addGestureRecognizer:tapGesture ];
        [subView2 addGestureRecognizer:tapGesture];

这是问题所在:

subView1不会响应tapGesture,但是subView2会响应。

如果我们从subview2删除tapGesture,subView1将起作用。

就内存管理而言,内部发生了什么?为什么不设计使以上代码起作用?

最佳答案

我非常确定,iOS中包含的标准手势识别器一次只能附加到一个视图。我找不到任何明确声明它的东西,但是如果您查看UIGestureRecognizer类,则会有一个带有以下描述的view属性:

手势识别器所附的视图。 (只读)

所以我的猜测是,如果addGestureRecgnizer:已附加到视图,它将取消附加该重新调整器。

关于ios - UIGestureRecognizer的内存管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10967327/

10-12 18:32