如何从 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())
}
}
}
如果我在标签中输入数字,如果输入有误, 如何从 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())
}
}
}