Как определить, какой UILabel был прослушан? - PullRequest
2 голосов
/ 01 ноября 2011

У меня есть три UILabel.Я хочу определить , какая метка называется Tapped, а затем получить строковое значение этой метки .это то, как я пытаюсь, мне удавалось только обнаружить позицию касания, но я не смог определить, какая метка была нажата.

Создание метки

for (NSInteger i=1; i<=[pdfs count]; i++){
    UILabel *newLabel=[[UILabel alloc] init];
    newLabel.text = [NSString stringWithFormat:[[pdfs objectAtIndex:(i-1)] lastPathComponent]];
    newLabel.frame = CGRectMake(10, 60*i, 320, 20);
    newLabel.tag=i;
    newLabel.font = [UIFont systemFontOfSize:20.0f];
    newLabel.backgroundColor = [UIColor clearColor];
    newLabel.userInteractionEnabled = YES;
    [self.view addSubview:newLabel];
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    [newLabel addGestureRecognizer:singleTap]; 
    [newLabel release], newLabel=nil;
    [singleTap release];
} 

Определение метчиков

 - (void)handleSingleTap:(UITapGestureRecognizer *)recognizer

{

CGPoint location;
location = [recognizer locationInView:self.view];

NSString *documentName;
if(location.y<150.0){
    documentName = [[pdfs objectAtIndex:0] lastPathComponent]; 
}
else{
    documentName = [[pdfs objectAtIndex:1] lastPathComponent]; 
}

Ответы [ 4 ]

4 голосов
/ 01 ноября 2011

Распознаватель жестов знает, к какому виду он относится.

UIView *theView = recognizer.view;
// cast it to UILabel if you are sure it is one
UILabel *theLabel = (UILabel *)theView;
4 голосов
/ 01 ноября 2011

Как вы добавили GestureRecognizer на этикетке

 // called when touch is began or when user touches 
    - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
    {
          UITouch *touch = [touches anyObject]; 

          UILabel *theLabel = (UILabel *)touch.view;

          if (theLabel.tag == 1)
          {}
          else if ...
    }
4 голосов
/ 01 ноября 2011

UIGestureRecognizer имеет ссылку на вид, к которому он присоединен, поэтому вы можете получить тег вашего ярлыка из него:

int touchedtag = recognizer.view.tag;
documentName = [[pdfs objectAtIndex:touchedtag-1] lastPathComponent]; 
3 голосов
/ 01 ноября 2011

Почему вы хотите использовать ярлыки в качестве кнопок?Просто используйте вместо этого кнопки, их можно настроить так, чтобы они выглядели как ярлыки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...