Установить пользовательский класс UIView программно? - PullRequest
0 голосов
/ 07 сентября 2011

Я добавляю UIView программно в суперпредставление, и я хотел бы добавить цель в UIView, чтобы иметь возможность выполнять любые действия при касании.Чтобы добавить цель, мне нужно установить пользовательский класс UIView в UIControl.Обычно это делается в IB, но так как я делаю это программно, я не могу настроить его таким образом.Я пытался настроить UIControl следующим образом, но он не работает.

subView.class = UIControl;

Как правильно это сделать?

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Причина, по которой вы иногда устанавливаете класс UIView на что-то другое, скажем, MyView, в IB заключается в том, что вы хотите создать MyView, но IB не имеет MyView в своей библиотеке, поэтому вы не можете просто перетащить его вваш взгляд.Таким образом, вместо этого вы перетаскиваете UIView и изменяете его класс на MyView.

В этом нет необходимости, когда вы создаете экземпляр объекта в коде, а не загружаете его из .xib.В коде вы знаете, какой класс вы хотите создать, поэтому вы просто создаете этот класс:

MyView *subview = [[MyView alloc] initWithFrame:someFrame];

Если вы хотите, чтобы подпредставление было UIButton, вы создаете его вместо:

UIButton *subview = [UIButton buttonWithType:UIButtonTypeRoundedRect];

Не связывайтесь с Иссой, по крайней мере, сейчас.Если вы задаете этот вопрос (и нет ничего плохого в том, чтобы задавать этот вопрос), вам следует относиться к метанию как к темному искусству, к которому вы можете прийти в какой-то момент в будущем.

2 голосов
/ 07 сентября 2011

Экземпляр UIView не имеет цели. Если вам нужен механизм назначения / действия, создайте экземпляр UIControl. В противном случае используйте распознаватель жестов на вашем экране.

0 голосов
/ 07 сентября 2011

У вас есть две опции:

  1. Вы должны напрямую создать UIControl, который является подклассом UIView, у этого класса такое же поведение представления, но вы можете использовать селектор addTarget:action:forControlEvents: для управления его событиями, или ...
  2. Вы должны использовать UIGestureRecognizer для управления взаимодействием с вашим видом.
...