2016-02-23 3 views
0

Недавно я опубликовал подобный пост, и я выяснил, в чем проблема, но я не знаю, как исправить эту проблему.Добавить цель для UIButton, не будучи вызванным

В моей ImageViewerViewController функция cancelButtonTapped не вызывается. Но я не думаю, что проблема, обязательно, заключается в этом коде. Вот код:

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 

    } 

} 

Я думаю, что проблема заключается в моем CathyTaskLogMessageViewController, когда я изменить код с self.view.addSubview(imageViewerViewController.view) к self.presentViewController(imageViewerViewController, animated: true, completion: nil) моей добавить целевую функция вызывается. Вот код:

func defaultPictureButtonTapped(sender: UIButton) { 

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

    } 

Однако я не хочу представлять контроллер вида. Я хочу добавить его как подвью. У кого-нибудь есть идея исправить это? И большое вам спасибо за вашу помощь заранее.

ответ

1

Проблема в том, как вы добавляете контроллер детского вида. Вам нужно позвонить addChildViewController(imageViewerViewController) перед тем self.view.addSubview(imageViewerViewController.view)

+0

Большое вам спасибо за ваш ответ. Это сработало. Однако я не понимаю, почему это работает сейчас. Не могли бы вы дать объяснение, почему ваш ответ работает? – aejhyun

+1

@Jae, рад, что это помогло. Если вы хотите добавить контроллер представления в качестве дочернего элемента, вам всегда нужно построить отношения родитель-потомок с помощью 'addChildViewController', взгляните на видео https://developer.apple.com/videos/play/wwdc2011-102/ (сеанс 102 - дополнение UIViewController Containment). В вашем cace 'addChildViewController' требуется разрешить дочернему контроллеру принимать участие в цепочке ответчиков – Nimble

+0

. Посмотрите на это. Спасибо :) – aejhyun

0

Once, что случилось со мной в то время, используя подвиды, что вид был перед подвид и, следовательно, кнопка на подвид не получал прослушиваются.

Попробуйте это: -

imageViewerViewController.view.layer.zPosition = 2 
//You can set any value in place of 2 which is greater than zposition value of the view 
self.view.addSubview(imageViewerViewController.view) 

Надеется, что это работает.

Смежные вопросы