UIGestureRecognizer 在屏幕外渲染
Posted
技术标签:
【中文标题】UIGestureRecognizer 在屏幕外渲染【英文标题】:UIGestureRecognizer rendered off screen 【发布时间】:2012-08-13 20:27:00 【问题描述】:我有一个UIGestureRecognizer
,它附加到一个UILabel
,它在屏幕外渲染,稍后进入视图。进入视野后,点击手势识别器不起作用。如果在视图中渲染,它可以正常工作。
任何想法为什么这不起作用?我该如何解决?
【问题讨论】:
你有没有试过在标签进入视图后添加识别器? 标签被带入视图后是否有其他(透明)视图覆盖/重叠标签? 我通过继承 UILabel 并实现 hitTest:withEvent: 解决了这个问题 【参考方案1】:我严重怀疑它是否与将其“渲染”到屏幕外有关(你的意思是什么)。无论如何,我建议当标签被带到屏幕上时,您验证标签是否已启用,然后执行以下操作:
NSArray *grs = label.gestureRecognizers;
for(UIGestureRecognizer *gr in grs)
NSLog(@"Recognizer: %@ enabled=%d state=%d del=%@", NSStringFromClass[gr class]), gr.enabled, gr.state, gr.delegate);
比较屏幕外和屏幕上的结果会很有趣。事情正在发生,只需要找出不同的属性。但是没有办法获得目标/动作对的列表。
【讨论】:
【参考方案2】:子类化UILabel
并实现hitTest:withEvent:
解决了这个问题
【讨论】:
以上是关于UIGestureRecognizer 在屏幕外渲染的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollview 内的 UIView 内的 UILabel 上的 UIGestureRecognizer
在 iOS 中使用 UIScrollView 添加 UIGestureRecognizer