在Swift中触摸UILabel时该如何编辑?

问题描述 投票:9回答:4

我想知道在应用运行时如何编辑文本标签。

示例:将出现一个名为“点击以更改文本”的标签。当用户单击它时,它将是可编辑的,并且用户可以输入文本并输入。然后它将更改为新文本。

我知道可以使用UITextFieldDelegate,完成此操作,但是我不知道该如何处理,因为用户触摸它时无法对标签进行操作。

ios swift uitextfielddelegate
4个回答
17
投票

[您不能像编辑textField一样编辑标签,但是当用户单击标签时,您可以隐藏标签并取消隐藏textField,当用户输入完文本后,您可以再次隐藏textField和取消隐藏标签,并且可以通过以下方式分配textField的文本以进行标签:] >

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var lbl: UILabel!
    @IBOutlet weak var textF: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        textF.delegate = self
        textF.hidden = true
        lbl.userInteractionEnabled = true
        let aSelector : Selector = "lblTapped"
        let tapGesture = UITapGestureRecognizer(target: self, action: aSelector)
        tapGesture.numberOfTapsRequired = 1
        lbl.addGestureRecognizer(tapGesture)
    }

    func lblTapped(){
        lbl.hidden = true
        textF.hidden = false
        textF.text = lbl.text
    }

    func textFieldShouldReturn(userText: UITextField) -> Bool {
        userText.resignFirstResponder()
        textF.hidden = true
        lbl.hidden = false
        lbl.text = textF.text
        return true
    }
}

希望它会有所帮助。


2
投票

要在此处添加我的2c并让我想起斯坦福大学最新的Paul Hegarty视频中的风格,可以在字段Field的“ didSet”中进行设置-您还可以通过以下方式为不同的标签设置不同的响应者:


0
投票

将TapGesture(UITapGestureRecognizer)添加到标签。现在,当用户点击它时,您可以启用文本字段,并在文本字段委托方法中将其转换为标签。


0
投票

最好将标签设置为UITextField。这样就可以显示标签的外观,并且在单击时可以对其进行编辑。

© www.soinside.com 2019 - 2024. All rights reserved.