画像をサブビューとして持つ画像ビューを持つスクロールビューがあり、画像ビューにはそのサブビューの1つとしてUIButton
があります。問題は、ボタンをクリックできないことです。ボタンは見えますが、タップできません。
誰かが私が台無しにしているのは何ですか?どんな助けでも大歓迎です!ありがとう!
以下はコードです:
scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img.jpg"]];
scrollView.delegate = self;
self.view = scrollView;
// add invisible buttons
[self addInvisibleButtons];
[scrollView addSubview:imageView];
addInvisibleButtons
のコードは次のとおりです。
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(buttonHandler) forControlEvents:UIControlEventAllEvents];
[button setTitle:@"point" forState:UIControlStateNormal];
button.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
[self.imageView addSubview:button];
UIImageView
のデフォルトではuserInteractionEnabled
がNO
/false
に設定されています。
ボタンをサブビューとして画像ビューに追加しています。 YES
/true
に設定する必要があります。
なぜ目に見えないUIButtons
をUIImageView
に追加するのですか?
悪い習慣のようです。Interface Builder
ではUIButton
を追加できないことに注意してください。
タッチ処理のある画像が必要な場合は、次のことができます。
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(buttonHandler) forControlEvents:UIControlEventAllEvents];
[button setTitle:@"point" forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"img.jpg"] forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0, 0.0, 40.0, 40.0)];
[scrollView addSubview:button];
addInvisibleButtons実装を次のようにすることができます
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundColor:[UIColor clearColor]];
[button addTarget:self action:@selector(buttonHandler) forControlEvents:UIControlEventAllEvents];
[button setTitle:@"point" forState:UIControlStateNormal];
button.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
self.imageView.userInteractionEnabled = YES;
[self.imageView addSubview:button];
UIButton
を完全に非表示にしたい場合は、UIButton
にテキストを表示して表示するため、[button setTitle:@"point" forState:UIControlStateNormal];
の行を削除する必要があります。
これで問題が解決する場合があります。