Getting sender UITapGestureRecognizer in Swift

So, I'm working on a selector that reminds users to pan an object, rather than clicking on it. The following code is an animation:

func labelTapped(sender:UITapGestureRecognizer)->Void{
    UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
        sender.view.frame = CGRectMake(sender.view.frame.origin.x + 15, sender.view.frame.origin.y, sender.view.frame.width, sender.view.frame.height)
        }, completion:
        {(value:Bool) in
            UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
                sender.view.frame = CGRectMake(sender.view.frame.origin.x - 15, sender.view.frame.origin.y, sender.view.frame.width, sender.view.frame.height)
                }, completion:
                {(value:Bool) in
                })
        })
}

Now back to the object itself. I select UITapGestureRecognizerand add it to the object, but I'm not sure how it works, since we used Objective-C again:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(labelTapped)];

where the parameter is not required. However, in Swift I will have to add the parameter to the bracket after labelTapped, as this will give me an error Missing argument for parameter #1 in call:

let labelTap1=UITapGestureRecognizer(target: self, action: labelTapped())

How do I solve this problem? thank!

+4
source share
2 answers

An action selector is a line ending in a colon that tells it that there is one parameter (sender):

let labelTap1=UITapGestureRecognizer(target: self, action: "labelTapped:")
+4
source
  override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
        tapRecognizer.numberOfTapsRequired = 1
        self.view.addGestureRecognizer(tapRecognizer)

    }

 func handleSingleTap(recognizer: UITapGestureRecognizer) {

        self.view.endEditing(true)

    }
+1
source

All Articles