Еще один поздний ответ ...
Как и предполагает @Kevin Sylvestre
, вы можете проверить на касание через UILabel, переопределив -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
в вашем контроллере представления.
Однако вместо того, чтобы проверять, находится ли касание с прямоугольником UILabel, мне проще проверить, было ли касание в «представлении» UILabel (помните, что UILabel наследует от UIView).
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
NSSet *touchedViews = [touches valueForKeyPath:@"view"];
if ([touchedViews containsObject:self.myLabel]) {
// do something
}
}
Эта техника может быть легко применена к другим объектам интерфейса, которые наследуются от UIView.
Кроме того, UILabel также необходимо включить «взаимодействие с пользователем», чтобы реагировать на событие касания. Это можно сделать в Интерфейсном Разработчике (Инспектор Атрибутов> Представление> Взаимодействие с пользователем включено) или программно - например: self.myLabel.userInteractionEnabled = YES;