如何从 UILabel 中删除最后输入的数字?

How can I remove last typed digit from a UILabel?

如果我在标签中输入数字,如果输入有误, 如何从 UILabel 中删除最后输入的数字?

我已经放置了一个按钮,用于从标签中删除最后一位数字。

按钮的名称是返回

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet var lbltext: UILabel!
    @IBOutlet var scrolview1: UIScrollView!
    @IBOutlet var fi: UITextField!
    @IBOutlet var scrolviewus: UIScrollView!
    @IBOutlet var counterLabel: UILabel!
    var isFirstTime = true

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func button(sender: AnyObject) {
        lbltext.numberOfLines = 0
        lbltext.text! = lbltext.text! + "\n" + fi.text! + "\n" + "---"
    }

    @IBAction func back(sender: AnyObject) {

    }
}
 let name: String = self.display.text!
 let stringLength = count(name)
 let substringIndex = stringLength - 1
 lbltext.text = (name as NSString).substringToIndex(substringIndex)

您刚刚尝试过委托 shouldChangeCharactersInRange 吗? :

记得在viewDidLoad下做:

fi.delegate = self

然后调用委托:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if string.characters.count == 0 && range.length > 0 {
        // Back pressed
        // do whatever you want with your labels..
        return false
    }

    return true
}

Objective-c

label.text = [label.text stringByReplacingCharactersInRange:NSMakeRange(label.text.length - 1, 1) withString:@""];

Swift

    if let text = label.text{
            let nsRange : NSRange = NSRange(location: (text.characters.count) - 1, length: 4)

            label.text = (label.text! as NSString)
                .stringByReplacingCharactersInRange(nsRange, withString: "")

    }

试试这个:

@IBAction func back(sender: AnyObject) {
    if let text = lbltext.text {
        lbltext.text = String(text.characters.dropLast())
    }
}

由于您要删除的不仅仅是最后添加的数字,请将标签的先前状态保留在名为 previous 的 属性 中,并在 back[=22= 时恢复它] 被按下:

var previous = ""

@IBAction func button(sender: AnyObject) {
    lbltext.numberOfLines = 0
    previous = lbltext.text!
    lbltext.text! = lbltext.text! + "\n" + fi.text! + "\n" + "---"
}

@IBAction func back(sender: AnyObject) {
    if !previous.isEmpty {
        lbltext.text = previous
        previous = ""
    }
}

对于多级撤消,使用一个数组来保存您之前的标签:

var previous: [String] = []

@IBAction func button(sender: AnyObject) {
    lbltext.numberOfLines = 0
    previous.append(lbltext.text!)
    lbltext.text = lbltext.text! + "\n" + fi.text! + "\n" + "---"
}

@IBAction func back(sender: AnyObject) {
    if let last = previous.last {
        lbltext.text = last
        previous.removeLast()
    }
}
@IBAction func back(sender: AnyObject) {
        for var i:Int = 0 ; i < 4 ; i++
        {
            if let text = lbltext.text 
            {
                lbltext.text = String(text.characters.dropLast())
            }
        }
    }