iPhone iOS如何在启用缩放时使UIScrollView与UIRotationGestureRecognizer一起工作?
Posted
技术标签:
【中文标题】iPhone iOS如何在启用缩放时使UIScrollView与UIRotationGestureRecognizer一起工作?【英文标题】:iPhone iOS how to make UIScrollView work with UIRotationGestureRecognizer when zooming is enabled? 【发布时间】:2012-04-06 15:53:39 【问题描述】:我在 ios5 中工作,显然我应该能够使用 scrollView.pinchGestureRecognizer 控制或至少抑制 UIScrollView 的内部捏合手势识别器。
但是,我的代码似乎不起作用。识别器不会将我的班级视为代表,也不会等待我的旋转手势识别器失败。我该怎么做才能优先考虑旋转手势,然后再考虑捏合?
更准确地说,我遇到的问题是同时旋转和缩放的视图“飞离屏幕”向左下角,再也看不到了。
-(void)setup scrollViews
[tempScrollView.pinchGestureRecognizer requireGestureRecognizerToFail:rotationRecognizer];
tempScrollView.pinchGestureRecognizer.delegate = self;
tempScrollView.maximumZoomScale = 4.0;
tempScrollView.minimumZoomScale = 0.25;
//
tempScrollView.delegate = self;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
return YES;
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
if([gestureRecognizer isEqual:rotationRecognizer])
NSLog(@"Rotation gesture");
else
NSLog(@"Other gesture: %@", [gestureRecognizer class]);
return YES;
- (IBAction)rotateView:(id)sender
if([sender isKindOfClass:[UIRotationGestureRecognizer class]])
UIRotationGestureRecognizer* recognizer = sender;
float recognizerRotation = [recognizer rotation];
CGAffineTransform transform = CGAffineTransformMakeRotation(recognizerRotation);
activeView.transform = transform;
【问题讨论】:
【参考方案1】:据我所知,UIScrollView
中的pinchGestureRecognizer
是只读的。
但是,您可以尝试继承 UIScrollView
并覆盖方法 addGestureRecognizer:
以禁用 pinchGestureRecognizer
,然后添加您自己的自定义 pinchGestureRecognizer
。
【讨论】:
以上是关于iPhone iOS如何在启用缩放时使UIScrollView与UIRotationGestureRecognizer一起工作?的主要内容,如果未能解决你的问题,请参考以下文章
如何在应用程序处于后台(ios)时使 FCM 通知正常工作?
iphone:UIScrollView 分页启用,无缩放和无预览
如何在没有缩放模式的 iPhone 6 上显示 iOS 应用程序
使用 Javascript 启用/禁用 iPhone Safari 的缩放?