我有一个UIViewController
我希望显示一个UIView
呈现为菜单。此菜单上有几个按钮。我想在我的应用程序中重复使用此菜单的几个不同的位置,所以我想我会创建一个名为ViewFactory
的类,其中有一个方法可以使用这些按钮返回UIView
。
在我的ViewController
上,我调用此方法并获取返回的UIView
并将其添加为子视图。
这很好用。我可以看到视图及其所有按钮,但按钮不响应任何触摸事件。不知道为什么会这样,并且很想知道我做错了什么。
以下是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
显示但按钮从不响应任何内容。
答案 0 :(得分:2)
您添加了包含ViewFactoryClass
现在您正在创建实例并尝试从ViewFactory
类调用操作。
您可以将方法更改为以下内容:
- (UIView *) addCloseRow : (id)object {
...
[button addTarget:[object class] action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown];
...
}