Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-通过编程创建的UIButton不';t触发触摸事件_Ios_Swift_Events_Uibutton - Fatal编程技术网

Ios Swift-通过编程创建的UIButton不';t触发触摸事件

Ios Swift-通过编程创建的UIButton不';t触发触摸事件,ios,swift,events,uibutton,Ios,Swift,Events,Uibutton,我以编程方式创建了一个按钮,并希望添加一个触摸事件处理程序。我已经尝试了我在网上找到的所有技巧,但所需的功能从未触发 upgradeNowView = UIButton() upgradeNowView.setTitle("Upgrade", forState: .Normal) upgradeNowView.contentMode = UIViewContentMode.ScaleToFill upgradeNowView.frame = CGRect(x: upgradeNowView.fr

我以编程方式创建了一个按钮,并希望添加一个触摸事件处理程序。我已经尝试了我在网上找到的所有技巧,但所需的功能从未触发

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

但这根本就没人打电话。任何帮助都将不胜感激。

您需要在
侧菜单\u控制器
实例的类中定义
upgradeTapped
函数。我猜,这是
SideMenuController
类。

我发现这是因为我将按钮放在视图旁边,但超出了它的边界(就在顶部):

有两种解决方法:

  • 在父视图的边界内移动按钮,或
  • 如前所述,句柄通过覆盖“hitTest”接触视图外部

您的选择器位于
MainViewContainer
上,按钮位于
side\u菜单\u控制器中
upgradeNowView.frame = CGRect(x: upgradeNowView.frame.minX, y: -50 , width: 320, height: 50)