这里给出一个示例,(使用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/