我有drawingView和listen UIPanGestureRecognizer、UIRotationGestureRecognizer和UIPinchGestureRecognizer。
- (void)viewDidLoad
{
[super viewDidLoad];
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)];
[self.drawingView addGestureRecognizer:panRecognizer];
UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateRecognizer:)];
[self.drawingView addGestureRecognizer:rotateRecognizer];
UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchRecognizer:)];
[self.drawingView addGestureRecognizer:pinchRecognizer];
[self.drawingView reloadData];
}
-(void) pinchRecognizer:(UIPinchGestureRecognizer*) recognizer {
return;
NSLog(@"Call scale");
}
- (void)rotateRecognizer:(UIRotationGestureRecognizer*)recognizer {
NSLog(@"Call rotaion");
}
如果我只选择UIRotationGestureRecognizer或UIPinchGestureRecognizer,那就太完美了。但是如果使用UIRotationGestureRecognizer和UIPinchGestureRecognizer只调用UIPinchGestureRecognizer,则不会调用UIRotationGestureRecognizer。我的代码中有什么问题?我想我会做一个UISegmented来选择模式,UIRotationGestureRecognizer还是UIPinchGestureRecognizer,我应该怎么做?
非常感谢
发布于 2014-03-04 01:00:55
如果您希望一次识别多个手势,请尝试使用gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer
,例如:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
编辑:除了在.h中包含委派之外,还要确保将UIGestureRecognizer
的委派设置为self,例如:
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)];
panRecognizer.delegate = self;
[self.drawingView addGestureRecognizer:panRecognizer];
UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateRecognizer:)];
rotateRecognizer.delegate = self;
[self.drawingView addGestureRecognizer:rotateRecognizer];
发布于 2014-03-04 11:08:47
如果其他手势识别器未执行,则使用requireGestureRecognizerToFail:
识别手势。
[rotateRecognizer requireGestureRecognizerToFail: pinchRecognizer];
https://stackoverflow.com/questions/22160816
复制相似问题