Alu*_*num 3 uitextfield nsmutableattributedstring swift
我在UITextField
使用新Swift
语言创建前缀时遇到了问题.目前我已经创建了UITextField
使用Interface Builder并且已经分配了一个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
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何为usernamePrefix分配新参数,以便为写入的文本提供2种不同的颜色UITextField
?我希望有前缀.lightGreyColor()
和其余的.blackColor()
.另外,如何让usernamePrefix不可编辑且不可删除?
谢谢您的帮助
Jer*_*ope 15
对于第一部分,您可以重构您的委托方法,如下所示.
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
//This makes the new text black.
textField.typingAttributes = [NSForegroundColorAttributeName:UIColor.blackColor()]
let protectedRange = NSMakeRange(0, 6)
let intersection = NSIntersectionRange(protectedRange, range)
if intersection.length > 0 {
return false
}
if range.location == 12 {
return true
}
if range.location + range.length > 12 {
return false
}
return true
}
Run Code Online (Sandbox Code Playgroud)
这将锁定长度为13,并且不能删除前缀.输入的所有内容都是UIColor.blackColor()
然后,您可以在viewDidLoad中使用类似以下的方法来设置前缀.
func makePrefix() {
let attributedString = NSMutableAttributedString(string: "C-TAD-")
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.lightGrayColor(), range: NSMakeRange(0,6))
textField.attributedText = attributedString
}
Run Code Online (Sandbox Code Playgroud)
sas*_*ash 11
更简单的办法是设置leftView
的UITextField
,以及如何定制你喜欢它:
let prefix = UILabel()
prefix.text = "C-TAD-"
// set font, color etc.
prefix.sizeToFit()
usernameField.leftView = prefix
usernameField.leftViewMode = .whileEditing // or .always
Run Code Online (Sandbox Code Playgroud)
它是不可编辑且不可删除的,您无需进行任何计算即可检查输入的长度。
归档时间: |
|
查看次数: |
3831 次 |
最近记录: |