gpt4 book ai didi

ios - 当用户使用 swift 键入时,限制 UIAlertController 中文本字段的输入?

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:57 26 4
gpt4 key购买 nike

我找到了关于 如何为 UIAlertController 添加文本字段的示例代码 但我无法限制用户仅输入 10 个字符,因为一个限制,当对常规文本字段进行编辑更改无法检查 UIAlertController 上的文本字段时,我有一个函数可以在结束时删除最后一个字符

//Function to Remove the last character

func trimStr(existStr:String)->String{

var countExistTextChar = countElements(existStr)

if countExistTextChar > 10 {
var newStr = ""
newStr = existStr.substringToIndex(advance(existStr.startIndex,(countExistTextChar-1)))
return newStr

}else{
return existStr
}

}

var inputTextField: UITextField?

//Create the AlertController
let actionSheetController: UIAlertController = UIAlertController(title: "Alert", message: "Swiftly Now! Choose an option!", preferredStyle: .Alert)

//Create and add the Cancel action
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
//Do some stuff
}
actionSheetController.addAction(cancelAction)
//Create and an option action
let nextAction: UIAlertAction = UIAlertAction(title: "Next", style: .Default) { action -> Void in


}
actionSheetController.addAction(nextAction)
//Add a text field
**actionSheetController.addTextFieldWithConfigurationHandler { textField -> Void in
//TextField configuration
textField.textColor = UIColor.blueColor()

inputTextField = textField**


}

//Present the AlertController
self.presentViewController(actionSheetController, animated: true, completion: nil)

谢谢。

最佳答案

您可以将警报 Controller 文本字段的委托(delegate)设置为例如这里显示 https://stackoverflow.com/a/24852979/1187415 :

actionSheetController.addTextFieldWithConfigurationHandler { [weak self] textField -> Void in
//TextField configuration
textField.textColor = UIColor.blueColor()
textField.delegate = self
}

请注意,您必须将 UITextFieldDelegate 协议(protocol)添加到您的查看 Controller 定义以进行编译:

class ViewController: UIViewController, UITextFieldDelegate {
// ...

然后你实现shouldChangeCharactersInRange委托(delegate)方法,每当文本将要响应更改时调用到用户交互。它可以返回 truefalse 以允许改变或否认它。

有各种如何限制文本字段长度的例子这个委托(delegate)方法,这是一种可能的实现方式:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool {
let newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string) as NSString
return newString.length <= 10
}

这将导致输入被忽略,如果它会导致文本字段长度大于 10。或者你总是可以截断10个字符的输入:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool {
let newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)
textField.text = trimStr(newString)
return false
}

第二种方法的缺点是光标总是跳动到文本字段的末尾,即使在某处插入了文本介于两者之间。

关于ios - 当用户使用 swift 键入时,限制 UIAlertController 中文本字段的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28012867/

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