Frage

Ok, also habe ich ein UILabel in Interface Builder erstellt, dass zeigt einige einige Standardtexte von „tap zu beginnen“.

Wenn der Benutzer tippt die UILabel ich es will eine IBAction Methode auszulösen: -(IBAction)next;, die aktualisiert den Text auf dem Etikett zu sagen, etwas Neues.
Es wäre wirklich praktisch, wenn diese mir erlaubt, einfach eine Verbindung von meiner Methode zu meinem Label zu ziehen und wählen Sie dann in retuschieren, wie mit einer Taste. aber leider keine Zigarre.

so sowieso, ich denke, meine Frage ist, werde ich Unterklasse UILabel haben diese zur Arbeit zu kommen? Oder gibt es eine Weise, die ich einen Knopf über das Etikett ziehen, aber es 0% undurchsichtig machen. Oder gibt es eine einfachere Lösung fehle ich?

War es hilfreich?

Lösung

Überprüfen Sie es heraus:

UILabel *label = ...
label.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =
      [[UITapGestureRecognizer alloc] initWithTarget:self 
                                              action:@selector(labelTap)];
[label addGestureRecognizer:tapGesture];

Der Trick ist, Benutzer-Interaktion zu ermöglichen.

Andere Tipps

UILabel erbt von UIView, die erbt von UIResponder. Alle UIResponder Objekte können Berührungsereignisse behandeln. Also in Ihrer Klassendatei, die über Ihre Ansicht kennt (die die UILabel enthält) implementieren:

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;

In Interface Builder stellen Sie den Tag-Wert des UILabel. wenn Berührungen in Ihrem touchesBegan Verfahren auftreten, überprüfen Sie den Tag-Wert der Ansicht zu dem der Tag gehört:

UITouch *touch = [touches anyObject];

if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";

Sie verbinden Sie den Code in Ihrer Klassendatei mit dem UILabel Objekt in Interface Builder, indem Sie Ihre UILabel Instanzvariable mit dem IBOutlet Präfix deklarieren:

IBOutlet UILabel *label;

Dann in Interface Builder können Sie diese anschließen.

Sie einen UIButton verwenden können, machen sie transparent, das heißt benutzerdefinierten Typ ohne ein Bild, und fügen Sie ein UILabel darauf (zentriert). Dann die normalen Tasten Ereignisse verdrahten.

Swift 3

Sie haben eine IBOutlet

@IBOutlet var label: UILabel!

, in dem Sie Benutzer-Interaktion ermöglichen und eine Gestenerkenner hinzufügen

label.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:)))
label.addGestureRecognizer(tapGesture)

Und schließlich handhaben den Hahn

func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) {
  // Your code goes here
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top