用户开始输入时如何记住 UITextView 中的文本属性
How to remember text attributes in UITextView when the user starts typing
我正在使用 UITextView
并尝试在用户键入时使用 attributedText
属性 显示文本。
这是我当前的代码:
textView.attributedText = NSMutableAttributedString(
string: "",
attributes: [
NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
NSKernAttributeName: 0.5,
NSParagraphStyleAttributeName: paragraphStyle
]
)
问题是,如果您提供空字符串,当用户开始输入时,文本不会使用 attributedText
属性进行格式化。
但是,我注意到如果我提供一个字符串,当用户开始追加该字符串时,文本会使用 attributedText
属性进行格式化。
我能想到的完成我需要的唯一方法是重写此函数,并在每次用户输入键时将文本设置为 attributedText:
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
没有其他更好的方法吗?
您需要使用 typingAttributes
属性.
而不是设置空属性字符串
textView.typingAttributes = [
NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
NSKernAttributeName: 0.5,
NSParagraphStyleAttributeName: paragraphStyle
]
The attributes to apply to new text being entered by the user.
我正在使用 UITextView
并尝试在用户键入时使用 attributedText
属性 显示文本。
这是我当前的代码:
textView.attributedText = NSMutableAttributedString(
string: "",
attributes: [
NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
NSKernAttributeName: 0.5,
NSParagraphStyleAttributeName: paragraphStyle
]
)
问题是,如果您提供空字符串,当用户开始输入时,文本不会使用 attributedText
属性进行格式化。
但是,我注意到如果我提供一个字符串,当用户开始追加该字符串时,文本会使用 attributedText
属性进行格式化。
我能想到的完成我需要的唯一方法是重写此函数,并在每次用户输入键时将文本设置为 attributedText:
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
没有其他更好的方法吗?
您需要使用 typingAttributes
属性.
textView.typingAttributes = [
NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
NSKernAttributeName: 0.5,
NSParagraphStyleAttributeName: paragraphStyle
]
The attributes to apply to new text being entered by the user.