UITextField
新しいSwift
言語を使用した内部でのプレフィックスの作成に関して問題が発生しています。現在、私は作成したUITextField
インタフェース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
}
}
さて、?で書かれたテキストに2つの異なる色を与える必要があるために、usernamePrefixに新しいパラメータを割り当てるにはどうすればよいUITextField
ですか?プレフィックスを.lightGreyColor()
に、残りをに入れたいの.blackColor()
ですが。また、usernamePrefixをユーザーが編集および削除できないようにするにはどうすればよいですか?
助けてくれてありがとう
最初の部分では、次のようにデリゲートメソッドをリファクタリングできます。
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
}
これにより、長さが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
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加