如何检测手势中的捏合和张开?

7

与缩放不同,我认为捏合手势通常用于控制,因此我只想检测捏合手势是向内还是向外捏合,以便折叠或展开一些表格部分。我应该如何做到这一点?


最好使用.velocity,这显然取决于你前进的方向是正还是负。下面的答案很奇怪。 - Fattie
3个回答

12

"比例"属性在收缩手势中小于1,在展开手势中大于1。这适用于所有使用两个手指的捏合手势。

我还观察到,如果我用5个手指收缩(这是最小化到主屏幕的快捷方式),比例值恰好为1.0 - 每次都是这样。但这不被我所知道的任何苹果文档支持。

您可以通过在捏合处理选择器中放置NSLog来实验值是多少。

NSLog(@"Scale: %.2f | Velocity: %.2f",pinch.scale,pinch.velocity);

8

嗯,这似乎很简单。 UIPinchGestureRecognizer 类仅有两个属性,即 scalevelocity。一个负的 scale 似乎意味着向内捏合,而正的 scale 表示向外捏合。

注意:“负”可能会误导。 “更小”是 0.0 < scale < 1.0,“更大”是 scale > 1.0


拿捏缩小也会给我负比例?FYI我正在使用从Storyboard拖动的捏合手势,比例设置为1,延迟结束已选中,延迟开始未选中。 - user1337645
1
不可能。我怀疑捏出会给你一个负比例尺。请检查并描述您如何得出此结果。 - Mundi
3
向内捏合会导致一个从1.0开始逐渐减少到0.0的刻度,而向外捏合则会导致一个从1.0开始逐渐增加的刻度。 - Scott Allen

3

您查看scale属性是正确的,但它在1处切换,而不是0。

    - (BOOL) pinchWasOutwards:(UIGestureRecognizer *)gestureRecognizer
    {
        return gestureRecognizer.scale > 1;
    }

只需使用.velocity,这更加简单。 - Fattie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接