Есть ли способ создать невидимую кнопку UIB, которая все еще будет «присутствовать», и перехватывать события касания для моего UIImageView? - PullRequest
27 голосов
/ 27 мая 2009

Я подумал, что был умен и просто поместил прозрачную UIButton поверх UIImageView с точным размером кадра, чтобы я мог легко связать его с любым событием, которое мне нравится, например TouchUpInside, и заставить его вызывать метод действия просмотр контроллера, когда пользователь прикасается к нему. Ну, это работает, пока альфа не ниже 0,1f. Если я сделаю 0.01f, это не будет работать. Таким образом, чтобы заставить его работать, при долгом взгляде на экран вы увидите, что 0.1f альфа просвечивает. И это совершенно отвратительно;)

Похоже, iPhone OS старается быть умным и не будет ловить события на кнопке, если ее визуально нет. Есть идеи, как это решить?

Конечно, я мог бы сделать подкласс UIImageView и реализовать touchesBegan: ... и т. Д., Но он не выглядит действительно элегантным. Я имею в виду ... когда я хочу сделать гиперссылку на изображение в Интернете, я бы никогда не захотел создать свой собственный HTML-элемент для этого изображения, просто связать его с URL-адресом при нажатии на него. Это просто не имеет большого смысла для меня.

Ответы [ 11 ]

0 голосов
/ 11 апреля 2011

Ответ Джейсона выше почти верен, но установка типа кнопки невозможна. Таким образом, чтобы программно создать пустую кнопку, используйте этот код:

UIButton* myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame=frame;
[self.view addSubview:myButton];
...