0

メニューとしてレンダリングするUIViewControllerを表示したい があります。UIViewこのメニューにはいくつかのボタンがあります。このメニューをアプリのいくつかの異なる場所で再利用したかったので、これらのボタンでViewFactorya を返すメソッドを持つ というクラスを作成することにしました。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 に答える