У меня проблема с атрибутами заполнителя UITextField. Я определил атрибуты текста как глобальную переменную, установил UITextField по умолчаниюTextAttributes и attributedPlaceholder в методе viewDidLoad и реализовал методы делегата текстового поля, чтобы показать текст по умолчанию, если текстовое поле остается пустым после окончания редактирования.UITextField атрибуты текста заполнителя сохраняют сброс
// MARK: - Define global meme text attributes
// Set text attributes
let memeTextAttributes = [
NSStrokeColorAttributeName: UIColor.blackColor(),
NSForegroundColorAttributeName: UIColor.whiteColor(),
NSFontAttributeName: UIFont(name: "HelveticaNeue-CondensedBlack", size: 40)!,
NSStrokeWidthAttributeName: -3.0
]
override func viewDidLoad() {
super.viewDidLoad()
// Format image to maintain aspect ratio
imagePickerView.contentMode = UIViewContentMode.ScaleAspectFit
// Set text attributes and alignment
topTextField.defaultTextAttributes = memeTextAttributes
bottomTextField.defaultTextAttributes = memeTextAttributes
topTextField.textAlignment = NSTextAlignment.Center
bottomTextField.textAlignment = NSTextAlignment.Center
// Set placeholder text for text fields
topTextField.attributedPlaceholder = NSAttributedString(string: "TOP", attributes: memeTextAttributes)
bottomTextField.attributedPlaceholder = NSAttributedString(string: "BOTTOM", attributes: memeTextAttributes)
// Set text field delegates
topTextField.delegate = self
bottomTextField.delegate = self
// Add tap gestures to dismiss keyboard when user taps outside of text field
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
}
текста Методы поля делегата:
// MARK: - Text field delegate methods
func textFieldDidBeginEditing(textField: UITextField) {
textField.attributedPlaceholder = nil
}
func textFieldDidEndEditing(textField: UITextField) {
// If textField is empty, show respective default placeholder text
if textField.text == "" {
if textField == topTextField {
textField.attributedPlaceholder = NSAttributedString(string: "TOP", attributes: memeTextAttributes)
}
else {
textField.attributedPlaceholder = NSAttributedString(string: "BOTTOM", attributes: memeTextAttributes)
}
}
}
И текст и заполнитель должен иметь тот же атрибуты текста, но проблема в том случае, если пользователь оставляет текстовое поле пустым, после его редактирования, следующий время, которое они идут, чтобы отредактировать его, текст заполняется только и не имеет штриха, который был определен в текстовых атрибутах. Но если пользователь не оставляет текстовое поле пустым, текст отображается так, как должен.
Если начальное редактирование пуст, текст не имеет инсульта: http://i59.tinypic.com/200r1mp.png
Если начальное редактирование не является пустым, текст появляется в порядке: http://i57.tinypic.com/t8oqkm.png
Любая идея, почему это происходит? Если атрибуты text/placeholder были установлены при загрузке представления, то он не должен меняться, если какой-либо метод явно не изменил его правильно?
когда-либо понял это? У меня такая же проблема.. –