2013-09-08 4 views
12

Ich bin neu in der iOS-Entwicklung. Ich weiß nicht, ob diese Frage bereits gestellt wurde oder nicht, Ich habe versucht, nach der Lösung auf Stackoverflow zu suchen, aber habe keine Ergebnisse erhalten.Wie kann ich Taps an einem bestimmten Teil (Teilstring) eines UILabel erkennen?

Frage:

Ich habe ein UILabelmyLabel mit dem Text genannt: "Klicken Sie hier, um fortzufahren"

Jetzt ist das Problem Ich möchte eine Aktion auszuführen, wenn der Benutzer nur „Click tippt ".

Ich weiß, wie man UITapGestureRecognizer verwendet, aber es reagiert auf das ganze UILabel. Ist es möglich, nur zu erkennen, wenn der Benutzer nur auf die Zeichenfolge "Click" tippt?

+2

Sie auch einige potenziell nützliche Antworten in [diese finden kann eng verwandte (wenn nicht doppelte) Frage] (http://stackoverflow.com/questions/1256887/clickable-links-in-uilabel). –

Antwort

5

Sie können die Position der Berührung überprüfen, um zu sehen, ob es sich um das Wort "Click" handelt. Dies ist möglicherweise nicht vollständig genau und kann brechen, wenn Sie den Text in Ihrem Etikett ändern.

Was Sie tun können, wird zunächst die Position des Klicks erhalten, indem mit:

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

Das die Position der Geste Ihrer Ansicht nach wird.

Sobald Sie diese haben, können Sie entweder die Größe des Wortes haben kann „Click“ hartcodiert oder Sie können ein identisches Etikett auf Ihre Geste Label erstellen, die Größe zu erhalten, wie zum Beispiel:

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

Sie können dies auch tun, wenn Sie das tatsächliche Label erstellen und diese Breite in einer statischen Variablen speichern, so dass Sie es nur einmal tun müssen und Sie kein zusätzliches Label erstellen müssen (dh den Text Ihres echten Labels auf @ setzen " Klicken Sie auf ", erhalten Sie die Breite und stellen Sie sie dann auf den echten Text ein.

Sobald Sie die Breite haben, Sie und die Lage des Hahns, können Sie prüfen, ob das Wort „Click“ angezapft wurde durch einen Vergleich:

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

danke ... Ich werde versuchen, dies .. –

+0

Ich habe [vollständige Beispiel in meiner Antwort hier] (http://Stackoverflow.com/a/29352519/168594) zeigen, wie dies mit 'UILabel',' UITapGestureRecognizer ', und' NSAttributedString' - keine Unterklassen notwendig. – zekel