取消手势识别器后以编程方式启动 hitTest:WithEvent 并返回不同的 UIView 以响应事件
Posted
技术标签:
【中文标题】取消手势识别器后以编程方式启动 hitTest:WithEvent 并返回不同的 UIView 以响应事件【英文标题】:Programmatically initiate hitTest:WithEvent after gesture recognizer was canceled and return a different UIView to respond to events 【发布时间】:2014-02-23 09:26:08 【问题描述】:我将覆盖hitTest:withEvent
以返回自我(最底部的视图)-
当返回 self
时 - 我的视图将响应触摸事件依次启动手势识别器。
如果取消手势或发生某些情况 - 我想手动启动hitTest:withEvent
,然后返回不同的视图来处理发生的相同事件/触摸序列。这是必要的,因为手势识别器仅在 hitTest:withEvent
返回手势视图并且其状态更改为 began
后才会启动。
我不知道该怎么做 - 我考虑过手动调用我的子视图
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
但我没有事件参数(手势接收)
【问题讨论】:
【参考方案1】:我认为这无法做到,将触摸事件传递给 UIGestureRecognizer 是私有 API。但是您可以将收到的最底部视图的触摸事件传递给您喜欢的任何视图并进行自己的手势识别。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
UIView* selectView = [self _findMatchView];
// maybe convert touches to selectView coordinate
[selectView handleTouchBegan:touches withEvent:event];
【讨论】:
以上是关于取消手势识别器后以编程方式启动 hitTest:WithEvent 并返回不同的 UIView 以响应事件的主要内容,如果未能解决你的问题,请参考以下文章
Apple Watch 应用程序在启动应用程序后以编程方式将视图滚动到顶部