Tak*_*aka 5 iphone uiscrollview ios
我在a上绘制了一个图形UIView,它由a包含,UIScrollView以便用户可以水平滚动以查看整个图形.
现在我想在用户用两个手指插入时缩放图形,但是我不想在X和Y方向上以相同的速率放大视图,我想通过改变X比例来仅在X方向上放大,而不改变Y量表.
我想我必须抓住捏合进/出手势并重绘图形,覆盖默认的缩放行为.
但是有办法做到这一点吗?
我一直很难抓住捏手势UIScrollView,因为它在开始滚动时取消了触摸.我希望即使UIScrollView取消触摸后缩放也能正常工作.:(
谢谢,库拉
eds*_*sko 12
虽然您无法删除现有的捏手势识别器,但您可以将其禁用,然后添加自己的:
// Disable existing recognizer
for (UIGestureRecognizer* recognizer in [_scrollView gestureRecognizers]) {
if ([recognizer isKindOfClass:[UIPinchGestureRecognizer class]]) {
[recognizer setEnabled:NO];
}
}
// Add our own
UIPinchGestureRecognizer* pinchRecognizer =
[[UIPinchGestureRecognizer alloc] initWithTarget:self
action:@selector(pinch:)];
[_scrollView addGestureRecognizer:pinchRecognizer];
[pinchRecognizer release];
Run Code Online (Sandbox Code Playgroud)
然后进去
- (void) pinch:(UIPinchGestureRecognizer*)recognizer { .. }
Run Code Online (Sandbox Code Playgroud)
使用
[recognizer locationOfTouch:0 inView:..]
[recognizer locationOfTouch:1 inView:..]
Run Code Online (Sandbox Code Playgroud)
弄清楚用户是水平还是垂直挤压.
你应该改为访问gestureRecognizers(在UIView中定义),滚动视图使用了几个,
弄清楚哪一个是夹点识别器并调用removeGestureRecognizer:滚动视图,然后创建自己的并让它完成工作,将其添加回来addGestureRecognizer:.
这些都是公共API,识别器以及它们所处的顺序不是(当前),因此在访问它们时会采取防御措施
(这是操纵UIKit视图的完全有效的方式,Apple不会/不应该有它的问题 - 尽管他们不保证它可以在以后的任何版本中使用)