3

我正在向我的UIGestureRecognizer一个视图控制器添加一个view

我想要的行为是当这个手势被识别为关闭手势视图控制器并将其转发到另一个视图控制器时。(我要转发的视图控制器已经向视图控制器展示了手势)

现在,当我关闭视图控制器时,捏手势识别器(逻辑上)失败了。

有什么建议么?谢谢。

4

3 回答 3

1

\ 编辑:现在委托使用gestureRecognizer 获取参数。

您可以实现如下协议:

@protocol ViewControllerWithGestureRecognizerDelegate

- (void)viewControllerGestureRecognizerEvent:(UIPinchGestureRecognizer *)gestureRecognizer;

@end

并将委托属性添加到将呈现手势识别器的视图控制器。

@property (nonatomic, weak) id<ViewControllerWithGestureRecognizerDelegate> delegate;

然后将手势识别器添加到您的视图控制器:

 UIPinchGestureRecognizer *gestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognizerAction:)];
[self addGestureRecognizer:gestureRecognizer];

在手势识别器的 action 方法中调用委托方法:

 - (void)gestureRecognizerAction:(UIPichGestureRecognizer *)gestureRecognizer
 {
   [self.delegate viewControllerGestureRecognizerEvent:gestureRecognizer];
 }

在第二个视图控制器中实现协议 ViewControllerWithGestureRecognizerDelegate(您希望在其中获得有关手势识别器事件的通知),并将该手势识别器的视图控制器的委托设置为第二个视图控制器。

 ViewControllerWithGestureRecognizer.delegate = ViewControllerInWhichYouWantToGetNotifiedAboutGestureRecognizerEvents.

这样,每次手势识别器调用第一个视图控制器上的方法时,都会通知第二个视图控制器。

于 2013-07-18T19:17:55.647 回答
0

实现这个委托方法不能解决你的问题吗?

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer {
    return YES;
}
于 2013-12-30T17:55:42.627 回答
0

delaysTouchesEnded在识别手势之前,您需要包含:

@property (nonatomic) BOOL delaysTouchesEnded
于 2013-10-15T12:04:36.960 回答