UILabel: Mit der userInteractionEnabled Methode auf einem Etikett
-
03-07-2019 - |
Frage
Ich frage mich, ob jemand die userInteractionEnabled Methode auf einem UILabel verwendet das Label zu ermöglichen, wie ein Knopf zu handeln (oder auch nur ein Verfahren abzufeuern). Jede Hilfe wäre sehr geschätzt. Cheers!
Update (4/30/09 @ 1: 07.00) Klarstellung: Ich habe einen Standard-Infobutton und daneben möchte ich mit dem Text „Einstellungen“ ein Etikett platzieren, und ich würde das Etikett mag wie die Taste funktioniert ( ., die dreht sich zu einem Einstellungsbildschirm Also, im Grunde muss ich die bereits definierte showSettinsView auf die „infoLabel“ Label binden;. ein Benutzer klickt auf der Infobutton oder infoLabel und die Methode feuert
Der Infobutton arbeitet bereits und wird unter Verwendung eines IBAction das Verfahren auszulösen. Ich würde gerne wissen, wie das Etikett verdrahten, um die gleiche Methode zu implementieren. Das ist alles. Cheers!
Lösung
userInteractionEnabled
ist keine Methode, sondern eine Eigenschaft. Aber ich denke, Sie werden diese einstellen möchten YES
Ereignisse zu ermöglichen, bis zum UIView
Superview zu erhalten.
Was möchten Sie vielleicht zu tun, die touchesBegan:withEvent:
Methode des UIView
außer Kraft setzen, die Ihre UIButton
und UILabel
Subviews enthält.
Im Rahmen dieses Verfahrens, Test, wenn eine der UITouch
berührt fällt innerhalb der Grenzen des UILabel
.
Das heißt, das CGPoint
Element [touch locationInView]
schneidet mit dem CGRect
Elemente [infoLabel bounds]
? Schauen Sie in die Funktion CGRectContainsPoint
diesen Test auszuführen.
Wenn ja, dann ein NSNotification
abfeuern, die denselben IBAction
Wähler als UIButton
nennt.
Andere Tipps
Eine andere Lösung könnte sein, ein UIButton
mit seiner Art, um benutzerdefinierte anstelle eines UILabel
Set zu verwenden. Auf diese Weise Ihre zweite Taste wie ein UILabel
aussehen wird, und Sie können es konfigurieren, dass die showSettingsView
Methode auszulösen.
Ich stimme Alex Apr 30, '09 und mein Vorschlag ist nur eine Ergänzung zu ihm, wenn Sie mit einem UIButton wollen nicht gehen. So wie ich es gelöst war durch eine UILabel durch
Erstellen- (id)initWithFrame:(CGRect)frame
{
label = [[UILabel alloc] initWithFrame: CGRectMake(5, 5, 20, 20)];
...
[label setUserInteractionEnabled: YES];
[self addSubview: label];
}
, dann können Sie die Berührungen überschreiben * Methoden wie touchesBegan, touchesEnded mit so etwas wie
- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event {
UITouch *touch = [touches anyObject];
if([touch view] == label) {
NSLog(@"I've been touched");
}
}