gpt4 book ai didi

以编程方式实例化的 subview 中的 iOS UIButton 未触发

转载 作者:行者123 更新时间:2023-11-28 18:53:21 24 4
gpt4 key购买 nike

我的 Storyboard中有一个 Nib,它没有连接到任何东西,但我将它实例化为一个 subview :

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

UIViewController 有一个带反馈的摄像头,工作正常,还有一个按钮(当我转到 View Controller 时也工作正常。)

该按钮链接到 Touch Down 事件和 Touch Up Inside 事件。

当我单击按钮时,我可以看到它正在从默认状态视觉上更改为聚焦或突出显示状态,但是似乎没有任何代码在执行。如果我将 NSLog 放在 ViewDidLoad 中,我可以在控制台中看到它,但对于链接方法则看不到。但是,如果我转到 View ,它确实有效。

这是怎么回事?

我查看了其他解决方案,但我不认为这可能是因为存在 View 或 CGRect 未正确校准或任何其他原因,因为我可以在单击按钮时看到视觉变化。

最佳答案

此代码违反了如何使用 View Controller 的规则一:

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

您不能像那样简单地实例化一个 View Controller ,然后手动将其 View 添加到 View 层次结构中。对此有非常严格的规定;为了手动将 View Controller 的 View 添加到您的界面,您必须精心设计一个“舞蹈”,而您并没有在跳这个舞。

结果是您的 cameraVC 出现,在 View Controller 层次结构中没有位置,然后消失在一阵烟雾中。因此,您的按钮没有可与之对话的对象,因此当点击按钮时,什么也不会发生。

我的建议是:为此 View 使用.xib 文件,而不是 Storyboard场景;在加载它并将其放入界面后,使用代码配置按钮,使其与 self(您的当前 View Controller )通信。

关于以编程方式实例化的 subview 中的 iOS UIButton 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37257510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com