0

我有一个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出现,但按钮从不响应任何内容。

4

1 回答 1

2

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

现在您正在创建实例并尝试从ViewFactory类中调用一个动作。

您可以将方法更改为以下内容:

- (UIView *) addCloseRow : (id)object {
    ...
    [button addTarget:[object class] action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown];
    ...
}
于 2013-04-29T17:50:52.080 回答