iOS中的UIButton以编程方式实例化子视图不会触发

我在故事板中有一个笔尖,它没有连接任何东西,但是我将它作为子视图实例化:

-(void)LoadCameraOverlayView { CameraOverlayViewController *cameraVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CameraOverlayNib"]; cameraVC.view.userInteractionEnabled = YES; [self.view addSubview:cameraVC.view]; } 

UIViewController有一个反馈工作正常的button(当我继续视图控制器也工作正常)。

该button链接到“触摸closures”事件和“触摸内部”事件。

当我点击button,我可以看到它正在从默认状态直观地改变它的焦点或突出显示的状态,但是没有任何代码似乎正在执行。 如果我把一个NSLog的ViewDidLoad我可以看到,在控制台,但不是为链接的方法。 但是,如果我继续看到它的工作。

任何想法是怎么回事?

我看了其他解决scheme,但我不认为这可能是有一种观点的方式,或CGRect没有正确校准或任何东西,因为我可以看到单击button时的视觉变化。

谢谢。

此代码违反了如何使用视图控制器的规则一:

 CameraOverlayViewController *cameraVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CameraOverlayNib"]; [self.view addSubview:cameraVC.view]; 

你不能简单地实例化一个视图控制器,然后将其视图手动添加到视图层次结构中。 对此有非常严格的规定。 有一个精心制作的“舞蹈”,你必须做的手动添加一个视图控制器的视图到你的界面,你不是在做舞蹈。

结果是你的cameraVC成立,在视图控制器层次结构中没有任何地方,并消失在一个烟雾。 因此没有任何对象与你的button进行交谈,所以当button被点击时,什么都不会发生。

我的build议是:使用.xib文件,而不是故事板场景,这个视图; 并且在加载它并将其放入界面后,使用代码来configurationbutton,以便与当前的视图控制器self交谈。