gpt4 book ai didi

swift - 使用 Swift 的 UITextField 中不可编辑的前缀

转载 作者:可可西里 更新时间:2023-10-31 23:53:17 26 4
gpt4 key购买 nike

我在使用新的 Swift 语言在 UITextField 中创建前缀时遇到问题。目前,我已经使用 Interface Builder 创建了 UITextField,并为其分配了一个 IBOutlet,命名为 usernameField,然后使用 textFieldDidBeginEditing 函数我在里面写了一个NSMutableAttributedString,命名为usernamePrefix,只包含单词“C-TAD-”,最后我限制了UITextField 最大字符数为 13,如下所示:

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet var usernameField : UITextField!

private var usernamePrefix = NSMutableAttributedString(string: "C-TAD-")

func textFieldDidBeginEditing(textField: UITextField) {
if textField == usernameField {
if usernameField.text == "" {
usernameField.attributedText = usernamePrefix
}
}

usernameField.addTarget(self, action: "textFieldDidChangeText:", forControlEvents:UIControlEvents.EditingChanged)
}

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
let maxUsernameLength = countElements(usernameField.text!) + countElements(string!) - range.length

return maxUsernameLength <= 13
}

override func viewDidLoad() {
super.viewDidLoad()

usernameField.delegate = self
passwordField.delegate = self
}
}

现在,我如何为 usernamePrefix 分配新参数,以便必须为 UITextField 中写入的文本提供 2 种不同的颜色?我想在 .lightGreyColor() 中添加前缀,在 .blackColor() 中添加其他前缀。另外,如何使用户无法编辑和删除 usernamePrefix?

感谢帮助

最佳答案

更简单的选择是设置 UITextFieldleftView 并按照您喜欢的方式自定义它:

let prefix = UILabel()
prefix.text = "C-TAD-"
// set font, color etc.
prefix.sizeToFit()

usernameField.leftView = prefix
usernameField.leftViewMode = .whileEditing // or .always

它是不可编辑和不可删除的,您不需要做任何计算来检查输入的长度。

关于swift - 使用 Swift 的 UITextField 中不可编辑的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28434993/

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