2015-02-07 86 views
1

我设置了一个Swipe Gesture Recognizer,并将其连接到代码,以便在用户向左滑动时可以旋转UIImageView为什么滑动手势识别器只能使用一次?

@IBAction func swipeToLeft(sender: AnyObject) { 

    UIView.animateWithDuration(1.0, animations: { 
     self.image.transform = CGAffineTransformRotate(self.image.transform, -3.14159265358979) 
    }) 
} 

我确定viewDidLoad方法是这样的:

image.userInteractionEnabled = true 

然而,UIImageView只得到转化只有一次

您可以从link下载该项目的演示。为什么会发生?

回答

2

我想,问题是,当你旋转你的图像,与之相关联的手势识别器也旋转了。您可以确保自己:

从右到左进行扫描。图像将旋转。然后从左到右进行滑动。它会再次旋转。

如果你想总是处理刷卡从右到左,你可以在一对夫妇的方式做到这一点:

  1. 如果你的观点总是被旋转180度,最简单的方法是改变手势识别器的方向(@LyndseyScott比我更快地纠正这个问题的代码,你可以检查她的答案:))。
  2. 另一种选择(特别是,如果可能存在某种情况,当您以某种任意角度旋转视图时),就是在要旋转的视图(而不是其子视图!)的顶部创建一个UIView,并且而是将手势识别器添加到它。
+0

是的,我正要发布相同的答案。我下载了OP的代码,这实际上是发生了什么事情。 – 2015-02-07 20:36:11

+0

非常感谢您回答我的问题。我没有得到你最后一句话。那是什么意思?你的意思是我应该使用'swipeToRight'' UIGestureRecognizer'? – Cesare 2015-02-07 20:36:41

+0

@CeceXX,不,我的意思是,在模拟器中进行滑动(或者在测试项目的任何地方)。首先你从右向左滑动。它使图像旋转。然后,如果您尝试从右向左滑动,则不会发生任何情况。但是,如果您尝试从左向右滑动(相反的方向,因为您将视图旋转了180度),它会再次旋转。 – FreeNickname 2015-02-07 20:39:42

2

只是为了阐述FreeNickname的答案,因为手势识别“旋转”与UIImageView一起,您可以将您的代码更改为以下,这样的滑动手势交换方向与图像一起,您可以继续从刷卡从右到左触发动画:

@IBAction func swipeToLeft(sender: UISwipeGestureRecognizer) { 
    UIView.animateWithDuration(1.0, animations: { 
      self.doubleDot.transform = CGAffineTransformRotate(self.doubleDot.transform, -3.14159265358979) 
      }, completion: { 
       (value: Bool) in 
       if sender.direction == UISwipeGestureRecognizerDirection.Left { 
        sender.direction = UISwipeGestureRecognizerDirection.Right 
       } else { 
        sender.direction = UISwipeGestureRecognizerDirection.Left 
       } 
     }) 
} 
+0

非常感谢!当我尝试运行代码时出现错误:'不能指定发件人中的方向'sender.direction = UISwipeGestureRecognizerDirection.Right'和'sender.direction = UISwipeGestureRecognizerDirection.Left'。再次感谢你的帮助。 – Cesare 2015-02-07 20:44:27

+1

@CeceXX更新您的swipeToLeft参数从'AnyObject'更新到'UISwipeGestureRecognizer',就像我在更新的代码中所做的那样。 – 2015-02-07 20:45:31

+1

我正在更新我的答案,包括解决这个问题的方法,但是1)你更快; 2)我无法在Swift中编写代码:)所以,+1 :)团队合作:) – FreeNickname 2015-02-07 20:48:29