简体   繁体   中英

Add Target for UIButton Not Called

I have two view controllers that I am currently working with. In my CathyTaskLogMessageViewController , I have this code:

func defaultPictureButtonTapped(sender: UIButton) {

    let imageViewerViewController = ImageViewerViewController()
    imageViewerViewController.image = self.defaultPictureButton.imageView!.image
    imageViewerViewController.cancelButtonImage = UIImage(named: "cancelButtonImage")
    imageViewerViewController.centerPictureFromPoint(self.defaultPictureButton.frame.origin, ofSize: self.defaultPictureButton.frame.size, withCornerRadius: self.defaultPictureButton.layer.cornerRadius)
    self.view.addSubview(imageViewerViewController.view)

}

And in my ImageViewerViewController , I have this code:

    var image: UIImage!
    var imageView: UIImageView!
    var scrollView: UIScrollView!
    var disableSavingImage: Bool!
    var pan: UIPanGestureRecognizer!
    var cancelButton: UIButton!
    var cancelButtonImage: UIImage!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.0)
        setCancelButton()

    }

    func setCancelButton() {

        self.cancelButton = UIButton(type: UIButtonType.RoundedRect)
        self.cancelButton.addTarget(self, action: "cancelButtonTapped:", forControlEvents: UIControlEvents.TouchUpInside)
        self.cancelButton.setImage(cancelButtonImage, forState: UIControlState.Normal)
        self.cancelButton.tintColor = UIColor.whiteColor()
        self.cancelButton.frame = CGRectMake(self.view.frame.size.width - (self.cancelButtonImage.size.width * 2) - 18, 18, self.cancelButtonImage.size.width * 2, self.cancelButtonImage.size.height * 2)
        self.view.addSubview(self.cancelButton)

    }

    func cancelButtonTapped(sender: UIButton) {

        print("cancelButtonTapped")

    }

    func centerPictureFromPoint(point: CGPoint, ofSize size: CGSize, withCornerRadius radius: CGFloat) {

        UIView.animateWithDuration(0.3, animations: { () -> Void in
            self.view.backgroundColor = UIColor(colorLiteralRed: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)

            }) { (finished: Bool) -> Void in

        }

    }

Now, when I tap the cancel button, it should print "cancelButtonTapped" in the console. However, there is not output from the console.

I think the problem has to do with the button being in a different subview perhaps? I'm not exactly sure. Anybody have a solution to this problem?

Also, when the cancel button loads, it loads from the left and moves to the right. Is there a way that the button just appears on the top right hand corner?

Thank you in advance for your help.

  • change background color, so you can identify the problem.

  • put this line in viewDidLayoutSubviews() this method so it loads from the left and moves to the right can solve

code:

override func viewDidLayoutSubviews() {
    self.cancelButton.frame = CGRectMake(self.view.frame.size.width - (self.cancelButtonImage.size.width * 2) - 18, 18, self.cancelButtonImage.size.width * 2, self.cancelButtonImage.size.height * 2)
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM