gpt4 book ai didi

iphone - UIButtons 不适用于以编程方式创建的 UIView

转载 作者:行者123 更新时间:2023-11-28 22:35:11 25 4
gpt4 key购买 nike

我有一个 UIViewController,我想显示一个呈现为菜单的 UIView。这个菜单上会有几个按钮。我想在我的应用程序中的几个不同地方重复使用这个菜单,所以我想我会创建一个名为 ViewFactory 的类,它有一个方法可以返回带有这些按钮的 UIView

在我的 ViewController 上,我调用此方法并获取返回的 UIView 并将其添加为 subview 。

这很好用。我可以看到 View 及其所有按钮,但是,按钮不响应任何触摸事件。不知道为什么会这样,很想知道我做错了什么。

这是我的 ViewFactoryClass 代码:

- (UIView *) addCloseRow
{
// UIView container for everything else.
UIView *navRow = [[UIView alloc] initWithFrame:CGRectMake(0,225,350,45)];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.userInteractionEnabled = YES;

[navRow addSubview:button];

[button addTarget:self action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown];
navRow.userInteractionEnabled = YES;
return navRow;
}

在我的主要 NavigationController 类中,这里是我调用和获取 UIView 的方式:

ViewFactory *factory = [[ViewFactory alloc] init];
[self.navigationController.navigationBar addSubview:[factory MainNavigationUIView]];

同样,UIView 出现了,但按钮从不响应任何内容。

最佳答案

您为 ViewFactoryClass 添加了带有目标和选择器的按钮

现在您正在创建实例并尝试从 ViewFactory 类调用操作。

你可以把方法改成这样:

- (UIView *) addCloseRow : (id)object {
...
[button addTarget:[object class] action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown];
...
}

关于iphone - UIButtons 不适用于以编程方式创建的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16285050/

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