Хорошо, таким образом, у меня есть a UILabel
созданный в интерфейсном разработчике, который отображает немного некоторый текст по умолчанию "касания для начала".
Когда пользователь касается UILabel
Я хочу, чтобы это инициировало метод IBAction: -(IBAction)next;
который обновляет текст на маркировке для высказывания чего-то нового.
Было бы действительно удобно, если бы это позволило мне просто перетаскивать соединение от своего метода до моей маркировки и затем выбирать, исправляют внутри, как с кнопкой. но увы, никакая сигара.
так так или иначе я предполагаю, что мой вопрос, я оказывающийся перед необходимостью подкласс UILabel
заставить это работать? Или есть ли некоторый способ, которым я могу перетащить кнопку по маркировке, но сделать ее 0% непрозрачный. Или есть ли простое решение, которое я пропускаю?
Вы можете использовать UIButton, сделать его прозрачным, т.е. произвольный тип без изображения, и добавить на него UILabel (по центру). Затем подключите обычные события кнопок.
UILabel наследуется от UIView, который наследуется от UIResponder. Все объекты UIresponder могут обрабатывать события касания. Итак, в вашем файле класса, который знает о вашем представлении (который содержит UIlabel), выполните:
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;
В построителе интерфейса установите значение тега UILabel. когда касания происходят в вашем методе touchesBegan, проверьте значение тега представления, которому принадлежит этот тег:
UITouch *touch = [touches anyObject];
if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";
Вы связываете свой код в файле класса с объектом UILabel в построителе интерфейса, объявляя переменную экземпляра UILabel с префиксом IBOutlet:
IBOutlet UILabel *label;
Затем в построителе интерфейсов вы можете их подключить.