gpt4 book ai didi

ios - 阻止一些数字键盘的数字,使其适应用户输入。

转载 作者:行者123 更新时间:2023-11-28 06:36:21 25 4
gpt4 key购买 nike

我的应用程序要求用户输入她/他使用数字键盘输入的精确分钟数。对于用户键入的第一个数字,我想阻止键盘的数字 > 5(这样他们就不能键入大于 59 的分钟数)。对于第二个号码,我希望它能取消阻止之前被阻止的号码,以便可以精确插入分钟(例如 18 或 59)。有没有办法做到这一点?如果是,怎么办?

最佳答案

您应该使用
textField(_:shouldChangeCharactersIn:replacementString:)
来自 UITextFieldDelegate .

这是一个您可以做什么的工作示例:

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

var startString = NSString()
if textField.text != nil {
startString = textField.text! as NSString
}

let endString = startString.stringByReplacingCharactersInRange(range, withString: string)

if endString.isEmpty == true {
return true
}


let intValue = Int(endString)
if intValue >= 0 && intValue < 60 {
return true
}

return false
}

在这种情况下,它将允许 0(包括)和 60(不包括)之间的每个整数值。

编辑:此方法由 UITextField 在其委托(delegate)上调用(如果您不了解什么是委托(delegate),请花一些时间阅读 thisthis ,此模式非常重要)。

因此,要使上述方法有效,您只需告诉您的 UITextField 您的 UIViewController 是它的委托(delegate)。您可以在代码中(例如在 viewDidLoad 中)或在 Interface Builder 中执行此操作。这是一个完整的示例:

class MyViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}

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

var startString = NSString()
if textField.text != nil {
startString = textField.text! as NSString
}

let endString = startString.stringByReplacingCharactersInRange(range, withString: string)

if endString.isEmpty == true {
return true
}

let intValue = Int(endString)
if intValue >= 0 && intValue < 60 {
return true
}

return false
}
}

关于ios - 阻止一些数字键盘的数字,使其适应用户输入。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38990149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com