2013-09-08 8 views
12

Jestem nowy w rozwoju iOS. Nie wiem, czy te pytania zostały już zadane, czy nie, Próbowałem szukać rozwiązania na stackoverflow, ale nie dostałem żadnych wyników.W jaki sposób mogę wykrywać zaczepy na określonej części (podłańcuchu) UILabel?

Pytanie:

Mam UILabel nazywa myLabel z tekstem: „Kliknij tutaj, aby przejść”

Teraz problem jest chcę, aby wykonać działanie, gdy użytkownik dotknie tylko „kliknięcie ".

Wiem, jak używać UITapGestureRecognizer, ale reaguje na cały UILabel. Czy można wykryć, kiedy użytkownik naciska tylko na ciąg "Kliknij"?

+2

Można również znaleźć kilka potencjalnie użytecznych odpowiedzi w [tym ściśle powiązane (jeśli nie duplikat) pytanie] (http://stackoverflow.com/questions/1256887/clickable-links-in-uilabel). –

Odpowiedz

5

Można sprawdzić lokalizację dotyku, aby sprawdzić, czy znajduje się on na słowie "Kliknij". Może to jednak nie być całkowicie dokładne i może się zepsuć, jeśli zmienisz tekst w swojej etykiecie.

Co można zrobić, to najpierw uzyskać lokalizację jednym kliknięciem za pomocą:

CGPoint location = [gesture locationInView:gesture.view]; 

To dostaje lokalizację gest w widoku.

Gdy masz to, można mieć rozmiar słowo „Click” zakodowane lub można utworzyć identyczną etykietę do etykiety gest, aby uzyskać rozmiar, takich jak:

UILabel *sizeLabel = //create label with same font. 
[sizeLabel setText:@"Click"]; 
float width = [sizeLabel sizeThatFits:CGSizeMake(MAXFLOAT,MAXFLOAT)].width; 

Możesz to również zrobić podczas tworzenia faktycznej etykiety i zapisać tę szerokość w zmiennej statycznej, tak, że musisz zrobić to tylko raz i nie musisz tworzyć dodatkowej etykiety (np. Ustawić tekst swojej prawdziwej etykiety na @ " Kliknij ", uzyskaj szerokość, a następnie ustaw ją na prawdziwy tekst).

Gdy masz szerokość, ty i lokalizacja kranu, można sprawdzić, czy słowo „Click” został wykorzystany przez porównanie:

if (location.x < width) { 
    //Put your tap code in here. 
} 
+0

dzięki ... Spróbuję tego .. –

+0

Mam [pełny przykład w mojej odpowiedzi tutaj] (http://stackoverflow.com/a/29352519/168594) pokazujący jak to zrobić z 'UILabel',' UITapGestureRecognizer 'i' NSAttributedString' - brak podklasy. – zekel

Powiązane problemy