以编程方式启动hitTest:取消手势识别器后的​​WithEvent并返回不同的UIView以响应事件

时间:2014-02-23 09:26:09

标签: ios objective-c uiview uitouch uievent

我重写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 个答案:

答案 0 :(得分:0)

我认为无法做到这一点,将触摸事件传递给UIGestureRecognizer是私有API。但是您可以将接收到的最底部视图的触摸事件传递给您喜欢的任何视图,然后自己动手识别。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
  UIView* selectView = [self _findMatchView];
  // maybe convert touches to selectView coordinate
  [selectView handleTouchBegan:touches withEvent:event];
}