Ответ 1
UIImageView
имеет userInteractionEnabled
по умолчанию значение NO
/false
.
Вы добавляете кнопку в качестве подсмотра к представлению изображения. Вы должны установить его на YES
/true
.
У меня есть вид прокрутки, который имеет представление изображения с изображением в качестве подзапроса, а изображение имеет 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
был полностью невидимым, вам нужно удалить строку
[button setTitle:@"point" forState:UIControlStateNormal];
поскольку он используется для отображения текста на UIButton
, который делает его видимым.
Это может решить вашу проблему.