2017-01-07 5 views
0

Я создал кнопку программно и хочу добавить обработчик события касания. Я пробовал все трюки, которые я нашел в Интернете, но желаемая функция просто не запускается.Swift - UIButton, созданный программно, не вызывает событие касания

upgradeNowView = UIButton() 
upgradeNowView.setTitle("Upgrade", forState: .Normal) 
upgradeNowView.contentMode = UIViewContentMode.ScaleToFill 
upgradeNowView.frame = CGRect(x: upgradeNowView.frame.minX, y: -50 , width: 320, height: 50) 
upgradeNowView.userInteractionEnabled = true 
upgradeNowView.sendActionsForControlEvents(.TouchUpInside) 
upgradeNowView.addTarget(self, action: #selector(MainViewContainer.upgradeTapped(_:)), forControlEvents: .TouchUpInside) 
side_menu_controller?.view.addSubview(upgradeNowView) 

и определил этот

func upgradeTapped(sender: UIButton) 
{ 
    UpgradeViewController.openUpgrade() 
} 

Но это просто никогда не вызывается. Любая помощь будет оценена по достоинству.

+5

Ваш селектор находится на 'MainViewContainer', а кнопка находится в' side_menu_controller' –

ответ

0

Вы должны определить функцию upgradeTapped в классе side_menu_controller экземпляра. Я думаю, это класс SideMenuController.

0

я узнал, что это вызвано тем, что я помещал кнопку рядом с видом, но за пределами его границ (только сверху):

upgradeNowView.frame = CGRect(x: upgradeNowView.frame.minX, y: -50 , width: 320, height: 50) 

Есть два способа обойти это:

  • Перемещение кнопки внутри границ родительского вида, или
  • ручки штрихов вне поля зрения пути переопределения «HitTest», как обсуждалось here