Подтвердить что ты не робот

UIButton внутри UIImageView не отвечает на краны

У меня есть вид прокрутки, который имеет представление изображения с изображением в качестве подзапроса, а изображение имеет 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];
4b9b3361

Ответ 1

UIImageView имеет userInteractionEnabled по умолчанию значение NO/false.

Вы добавляете кнопку в качестве подсмотра к представлению изображения. Вы должны установить его на YES/true.

Ответ 2

Могу ли я спросить, почему вы добавляете невидимый 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];

Ответ 3

У вас может быть реализация 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, который делает его видимым.

Это может решить вашу проблему.