Tôi cố gắng để áp dụng NSAttributedString phong cách để một UITextField sau khi xử lý một mục văn bản mới, tổ hợp phím bằng cách gõ phím. Vấn đề là bất cứ lúc nào tôi thay thế văn bản con trỏ sẽ nhảy vào cuối mỗi thay đổi. Dưới đây là cách tiếp cận hiện tại của tôi ...Format UITextField văn bản mà không cần phải di chuyển con trỏ đến cuối
Tiếp nhận và thay đổi văn bản hiển thị ngay lập tức (cùng một vấn đề áp dụng khi tôi trả về false và làm việc thay thế văn bản bằng tay)
func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
let range:NSRange = NSRange(location: range.location, length: range.length)
let newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string);
return true
}
tôi đăng ký thông báo UITextFieldTextDidChangeNotification. Điều này kích hoạt kiểu dáng. Khi văn bản được thay đổi, tôi thay thế nó (NSString) với phiên bản đã định dạng (NSAttributedString) bằng cách sử dụng một hàm định dạng() nào đó.
func textFieldTextDidChangeNotification(userInfo:NSDictionary) {
var attributedString:NSMutableAttributedString = NSMutableAttributedString(string: fullString)
attributedString = format(textField.text) as NSMutableAttributedString
textField.attributedText = attributedString
}
Tạo kiểu hoạt động tốt như thế này. Tuy nhiên sau mỗi lần thay thế văn bản, con trỏ nhảy tới cuối chuỗi. Làm cách nào để tắt hành vi này hoặc di chuyển con trỏ trở lại vị trí bắt đầu chỉnh sửa theo cách thủ công? … Hoặc là có một giải pháp tốt hơn để tạo kiểu cho văn bản trong khi chỉnh sửa?
Ồ, hoàn hảo. Nó hoạt động như thế. Cảm ơn – Bernd