Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIScrollView。如何在缩进和缩小缩放之间消除歧义?_Ios_Uiscrollview - Fatal编程技术网

Ios UIScrollView。如何在缩进和缩小缩放之间消除歧义?

Ios UIScrollView。如何在缩进和缩小缩放之间消除歧义?,ios,uiscrollview,Ios,Uiscrollview,我有一个应用程序,我需要以编程方式防止夹入,同时允许夹出发生。有没有办法消除缩进和缩小缩放之间的歧义 谢谢, 道格你有两个选择: (1) 使用UIScrollView。您需要实现UIScrollViewDelegate。在那里,在scrollViewDidZoom:(UIScrollView*)scrollView中,您可以将当前的zoomScale值与上一个值进行比较。如果它增大,则用户正在放大。否则,用户将缩小。然后你可以根据这个做一些事情 (2) 使用UIPinchGestureRecog

我有一个应用程序,我需要以编程方式防止夹入,同时允许夹出发生。有没有办法消除缩进和缩小缩放之间的歧义

谢谢,
道格

你有两个选择:

(1) 使用
UIScrollView
。您需要实现
UIScrollViewDelegate
。在那里,在
scrollViewDidZoom:(UIScrollView*)scrollView
中,您可以将当前的zoomScale值与上一个值进行比较。如果它增大,则用户正在放大。否则,用户将缩小。然后你可以根据这个做一些事情


(2) 使用
UIPinchGestureRecognitor
。这种情况下的逻辑基本相同(只需添加一个类似的检查,查看收缩比例是上升还是下降)。

这里是一个基本代码。这可能需要一些重构来实现您所需要的确切功能

// 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];

- (void) pinch:(UIPinchGestureRecognizer*)recognizer { 

   if (lastScale < [recognizer scale]) {

   // pinch - out // write your own code here
   }
   else (lastScale > [recognizer scale]) {

   // pinch - in // write your own code here
   }
}

}
//禁用现有识别器
用于(UIGestureRecognitor*识别器在[\u scrollView GestureRecognitors]中){
if([Recognitor isKindOfClass:[UIPinchGestureRecognitor class]])){
[识别器设置已启用:否];
}
}
//加上我们自己的
UIPinchEstureRecognitor*PinchRecognitor=
[[UIPinchGestureRecognitizer alloc]initWithTarget:self
动作:@选择器(按压:)];
[_ScrollViewAddGestureRecognitor:PinchreRecogniter];
[钳形释放];
-(void)pinch:(UIPinchGestureRecognitor*)识别器{
如果(lastScale<[识别器比例]){
//省钱//在这里编写自己的代码
}
else(lastScale>[识别器比例]){
//插入//在这里编写自己的代码
}
}
}

希望这将帮助您按照您的要求处理夹点事件。

由@BlackRider提供的解决方案也是正确的,而且更可取。