为未调用的UIButton添加目标

时间:2016-02-23 12:44:57

标签: ios swift uibutton

我目前正在使用两个视图控制器。在我的CathyTaskLogMessageViewController中,我有以下代码:

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)

}

在我的ImageViewerViewController中,我有这段代码:

    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

        }

    }

现在,当我点击取消按钮时,它应该在控制台中打印"cancelButtonTapped"。但是,控制台没有输出。

我认为这个问题可能与按钮在不同的子视图中有关吗?我不太确定。任何人都有解决这个问题的方法吗?

此外,当加载取消按钮时,它从左侧加载并向右移动。有没有办法让按钮出现在右上角?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  • 更改背景颜色,以便识别问题。

  • 将此行放入viewDidLayoutSubviews()此方法中,使其从左侧加载并向右移动可以解决

代码:

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)
}