1

次のコードがあります。

UIImage *registerImg = [UIImage imageNamed:@"register_button_normal"];
CGFloat registerOffsetX = (view.frame.size.width - registerImg.size.width) / 2;

UIButton *registerBtnTwo = [[UIButton alloc] init];
registerBtnTwo.frame = CGRectMake(registerOffsetX, 111, registerImg.size.width, registerImg.size.height);

[registerBtnTwo setBackgroundImage:registerImg forState:UIControlStateNormal];
[registerBtnTwo addTarget:self action:@selector(submitRegister) forControlEvents:UIControlEventTouchUpInside];
[registerPanel addSubview:registerBtnTwo];
[registerBtnTwo release];

- (void)submitRegister;インスタンスメソッドとしてクラスヘッダーを持っています。

問題は、submitRegister 実装に NSLog があるため、イベントが発生しないことです

私が試したこと:

1. UIButton *registerBtnTwo = [UIButton buttonWithType:UIButtonTypeCustom];

2. UIButton *registerBtnTwo = [[UIButton alloc] initWithFrame:frame];

編集 1: 現在の View Controller を navigationController に追加するのは誰ですか?

if ( row == kLoginRegisterIndex ) {
    login = [[LoginRegisterVC alloc] init];
    [self.navigationController pushViewController:login animated:YES];
}  

編集2:

UIView *registerPanel = [[UIView alloc] initWithFrame:frame];
registerPanel.backgroundColor = [UIColor colorWithPatternImage:image];

何か案は?

4

2 に答える 2

1

を変更してみてください

[registerBtnTwo addTarget:self action:@selector(submitRegister) forControlEvents:UIControlEventTouchUpInside];

[registerBtnTwo addTarget:self action:@selector(submitRegister:) forControlEvents:UIControlEventTouchUpInside];

メソッドのシグネチャはsubmitRegister:(not submitRegister) です。ヘッダーでメソッドを宣言する必要はありません。

これで問題が解決しない場合は、ホスト ビューのフレームを確認してください。ボタンがフレームの外にある場合、ボタンは表示できますが、タッチは受け付けません。

編集で何を求めているのかわかりません。

于 2012-07-27T11:15:01.233 に答える
0

問題は、親ビューが UIImageView であり、デフォルトで userInteractionEnabled = NO; であるということでした。

于 2012-11-16T08:48:17.053 に答える