滚动视图平移防止捏手势?
Posted
技术标签:
【中文标题】滚动视图平移防止捏手势?【英文标题】:Scroll view panning prevents pinch gesture? 【发布时间】:2011-05-18 00:57:27 【问题描述】:我正在创建一个用于游戏项目的图像平铺库,以适应我们现有的框架。我目前正在使用 UIScrollView (带有空视图)来允许我劫持漂亮的物理效果以使用反弹进行平移,但我必须使用捏合手势识别器实现自己的缩放(出于我不会进入的原因) .
不过,事情是这样的——当我用一根手指平移时,添加第二次触摸并尝试缩放什么也没做。在它允许我缩放之前,我需要完全静止。当用户在图像周围平移时,我的捏合手势识别器永远不会触发,除非平移完全完成。
有谁知道解决这个问题的方法,不涉及废弃 UIScrollView 并实现我自己的平移?
这是我的 scrollViewDidScroll 函数:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
viewingBounds.origin.x = scrollView.contentOffset.x;
// Transform the y from UIKit coordinates into OpenGL coordinates
viewingBounds.origin.y = world.height - viewingBounds.size.height - scrollView.contentOffset.y;
[parentScene update]; // Render the image
我的手势识别器直接添加到 init 中的滚动视图中:
[scrollView addGestureRecognizer:[[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(didReceivePinch:)] autorelease]];
【问题讨论】:
【参考方案1】:您需要设置 GestureRecognizer 对象的委托,并在委托中实现此方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
并让它返回 YES。
【讨论】:
【参考方案2】:您是否尝试过 Apple 的 ZoomingPDFViewer 或 PhotoScroller 中的任何内容?在 Photo Scroller 中,图像被平铺和平铺,然后您放大。希望您可以从中获得一些东西。如果您在解压缩文件时遇到问题,请尝试从 Xcode 下载。
我想我还发现其他一些人在做一些接近的事情:
https://***.com/questions/5383757/scaling-panning-a-uiimageview-using-pinch-and-swipe-gestures-free-code
http://answers.unity3d.com/questions/22500/how-to-zoom-and-pan-when-you-pinchswipe-across-scr.html
http://technology.blurst.com/iphone-multi-touch/
希望对你有帮助。
【讨论】:
是的,我都看过了,但问题是他们都只是使用滚动视图来渲染他们的场景,而我们想要在我们自己的 OpenGL 系统中完全控制渲染。这就是问题所在——UIScrollView 中的缩放值完全取决于你在 viewForZoomingInScrollView 中传递它的视图,并希望你对它给你的东西感到满意——即使传递一个空白视图也不能解决我们的问题。老实说,我认为我只需要删除滚动视图并使用触摸重新实现它的一些功能。有点痛,但不是太严重。 :)【参考方案3】:嘿亚当,我不知道你是否重写了任何东西,但我有一些替代方案给你here、here、here,更糟糕的情况是问别人同样的问题here。希望对您有所帮助。
【讨论】:
以上是关于滚动视图平移防止捏手势?的主要内容,如果未能解决你的问题,请参考以下文章