0

viewDidLoad メソッドに次のコードがあります。これは、スクロールビューとページ コントローラーを備えた uiviewcontroller です。

配列からビューを作成し、3 ページ目にボタンを配置する次のコードがあります。

 for (int i = 0; i < imageNames.count; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;

UIView *subview = [[UIView alloc] initWithFrame:frame];

UIImageView *myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width,self.view.frame.size.height)];

myImageView.image=[UIImage imageNamed:[imageNames objectAtIndex:i]];

[subview addSubview: myImageView];


UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[button addTarget:self 
           action:@selector(doSomething:)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];

if(i == 1){
[myImageView addSubview:button];
}
[self.scrollView addSubview:subview];

}

このビューをモーダル ビューとして却下する ibaction があります。}

問題は、このボタンが反応しないことです。doSomething メソッドを呼び出すどころか、タッチしても強調表示されません。

私は何を間違っていますか?

4

2 に答える 2

3

将来の検索者のために投稿...

userInteractionEnabledのプロパティを有効にしUIImageViewてもうまくいかない場合は、UIButton のビューがそのスーパービューのフレームの外にあるかどうかを確認する必要があります。

オブジェクトのビューがそのスーパービューのフレームの外にある場合、ユーザーには表示されますが、タッチ イベントを受け取ることはできません。

于 2012-07-01T13:08:47.787 に答える
3

これが問題であるかどうかを確認してください。

UIImageView ドキ​​ュメントから:

新しいイメージ ビュー オブジェクトは、デフォルトでユーザー イベントを無視するように構成されています。UIImageView のカスタム サブクラスでイベントを処理する場合は、オブジェクトの初期化後に userInteractionEnabled プロパティの値を明示的に YES に変更する必要があります。

于 2012-06-30T16:41:10.280 に答える