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!

War es hilfreich?

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");
       }
   }     
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top