it-swarm.com.de

Wie kann ich UILabel dazu bringen, auf Tippen zu antworten?

Ich habe festgestellt, dass ich UILabel viel schneller als UITextField erstellen kann und ich plane, UILabel die meiste Zeit für meine Datenanzeige-App zu verwenden.

Um es kurz zu machen, ich möchte, dass der Benutzer auf ein UILabel tippt und mein Rückruf darauf reagiert. Ist das möglich?

Vielen Dank.

87
Happy

Sie können Ihrem UILabel eine UITapGestureRecognizer -Instanz hinzufügen.

Beispielsweise:

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[myLabel addGestureRecognizer:tapGestureRecognizer];
myLabel.userInteractionEnabled = YES;
203
pythonquick

Wenn Sie Storyboards verwenden, können Sie diesen gesamten Vorgang ohne zusätzlichen Code im Storyboard ausführen. Fügen Sie dem Storyboard eine Bezeichnung hinzu, und fügen Sie dem Etikett dann eine Tippbewegung hinzu. Vergewissern Sie sich, dass im Bereich "Dienstprogramme" die Option "Benutzerinteraktion aktiviert" für die Bezeichnung aktiviert ist. Klicken und ziehen Sie mit gedrückter Strg-Taste (unten auf dem View Controller im Storyboard) in Ihre ViewController.h-Datei und erstellen Sie eine Aktion. Implementieren Sie dann die Aktion in der Datei ViewController.m.

36
leenyburger

Swift 3.

Initialisiere die Geste für tempLabel

tempLabel?.text = "Label"
let tapAction = UITapGestureRecognizer(target: self, action: #selector(self.actionTapped(_:)))
tempLabel?.isUserInteractionEnabled = true
tempLabel?.addGestureRecognizer(tapAction)

Aktionsempfänger

func actionTapped(_ sender: UITapGestureRecognizer) {
    // code here
}

Swift 4.

Initialisiere die Geste für tempLabel

tempLabel?.text = "Label"
let tapAction = UITapGestureRecognizer(target: self, action:@selector(actionTapped(_:)))
tempLabel?.isUserInteractionEnabled = true
tempLabel?.addGestureRecognizer(tapAction)

Aktionsempfänger

func actionTapped(_ sender: UITapGestureRecognizer) {
    // code here
}
13
Koushik

Swift 2.0:

Ich füge eine nsmutable-Zeichenfolge als sampleLabel-Text hinzu, um die Benutzerinteraktion zu ermöglichen, eine Tap-Geste hinzuzufügen und eine Methode auszulösen.

override func viewDidLoad() {
    super.viewDidLoad()

    let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.")
    newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue], range: NSMakeRange(4, 4))
    sampleLabel.attributedText = newsString.copy() as? NSAttributedString

    let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapResponse:")
    tapGesture.numberOfTapsRequired = 1
    sampleLabel.userInteractionEnabled =  true
    sampleLabel.addGestureRecognizer(tapGesture)

}
func tapResponse(recognizer: UITapGestureRecognizer) {
    print("tap")
}
8
A.G

Sie können stattdessen einen UIButton verwenden und den gewünschten Text festlegen. Die Schaltfläche muss nicht wie eine Schaltfläche aussehen, wenn Sie dies nicht möchten

4
Matt S.

m eine Tippen-Geste auf UILabel hinzuzufügen

UITapGestureRecognizer *tapAction = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lblClick:)];
tapAction.delegate =self;
tapAction.numberOfTapsRequired = 1;

//Enable the lable UserIntraction
lblAction.userInteractionEnabled = YES;
[lblAction addGestureRecognizer:tapAction];   

nd um die Auswahlmethode zu bewerten

- (void)lblClick:(UITapGestureRecognizer *)tapGesture {

}

Hinweis: Fügen Sie UIGestureRecognizerDelegate in die .h-Datei ein

3
Hardik Thakkar

Swift Version:var tapGesture : UITapGestureRecognizer = UITapGestureRecognizer()

Fügen Sie dann in viewDidLoad() Folgendes hinzu:

  let yourLbl=UILabel(frame: CGRectMake(x,y,width,height)) as UILabel!

    yourLbl.text = "SignUp"
    tapGesture.numberOfTapsRequired = 1
    yourLbl.addGestureRecognizer(tapGesture)
    yourLbl.userInteractionEnabled = true
    tapGesture.addTarget(self, action: "yourLblTapped:")
2
Aditya Jha

Wenn Sie mehrzeiligen Text in Ihrer Schaltfläche verwenden möchten, erstellen Sie ein UILabel mit mehrzeiligem Text und fügen Sie dieser Schaltfläche eine Unteransicht hinzu.

für zB:

yourLabel=[Uilabel alloc]init];
yourLabel.frame=yourButtom.Frame;//(frame size should be equal to your button's frame)
[yourButton addSubView:yourLabel]
1
Chandramani

Swift 3 von Alvin George

override func viewDidLoad() {
    super.viewDidLoad()
    let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.")
    newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.styleDouble.rawValue], range: NSMakeRange(4, 4))
    sampleLabel.attributedText = newsString.copy() as? NSAttributedString

    let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapResponse))
    tapGesture.numberOfTapsRequired = 1
    sampleLabel.isUserInteractionEnabled =  true
    sampleLabel.addGestureRecognizer(tapGesture)
}

func tapResponse(recognizer: UITapGestureRecognizer) {
    print("tap")
}
1
MRustamzade

Die Swift-Version sieht folgendermaßen aus:

func addGestureRecognizerLabel(){
    //Create a instance, in this case I used UITapGestureRecognizer,
    //in the docs you can see all kinds of gestures
    let gestureRecognizer = UITapGestureRecognizer()

    //Gesture configuration
    gestureRecognizer.numberOfTapsRequired = 1
    gestureRecognizer.numberOfTouchesRequired = 1
    /*Add the target (You can use UITapGestureRecognizer's init() for this)
    This method receives two arguments, a target(in this case is my ViewController) 
    and the callback, or function that you want to invoke when the user tap it view)*/
    gestureRecognizer.addTarget(self, action: "showDatePicker")

    //Add this gesture to your view, and "turn on" user interaction
    dateLabel.addGestureRecognizer(gestureRecognizer)
    dateLabel.userInteractionEnabled = true
}

//How you can see, this function is my "callback"
func showDatePicker(){
    //Your code here
    print("Hi, was clicked")
}

//To end just invoke to addGestureRecognizerLabel() when
//your viewDidLoad() method is called

override func viewDidLoad() {
    super.viewDidLoad()
    addGestureRecognizerLabel()
}
0
LeoGalante