热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS11:输入时UITextViewtypingAttributes重置

如何解决《iOS11:输入时UITextViewtypingAttributes重置》经验,为你挑选了2个好方法。

typingAttributes用来设置一个新字体.在iOS的10,一切正常,但iOS的11,第一个输入的字符是正确的,但后来属性重置到以前的,而第二个字符键入与以前的字体.这是一个错误吗?我能以某种方式修复它吗?



1> Serdnad..:

我遇到了同样的问题,最终通过在每次编辑后再次设置typingAttributes来解决它.

斯威夫特3

func textViewDidChange(_ textView: UITextView) {
    NotesTextView.typingAttributes = [NSForegroundColorAttributeName: UIColor.blue, NSFontAttributeName: UIFont.systemFont(ofSize: 17)]
}



2> Fangming..:
为什么会这样:

Apple typingAttributes自iOS 11起更新

此字典包含要应用于新键入的文本的属性键(和相应的值).当文本视图的选择发生更改时,将自动清除字典的内容.

如何解决:

@Serdnad的代码有效,但会跳过第一个字符.在尝试了我能想到的一切之后,这是我的发现

1.如果您只想为文本视图使用一个通用输入属性

只需在此委托方法中设置一次输入属性,就可以使用此单一通用字体进行设置

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
    //Set your typing attributes here
    textView.typingAttributes = [NSAttributedStringKey.foregroundColor.rawValue: UIColor.blue, NSAttributedStringKey.font.rawValue: UIFont.systemFont(ofSize: 17)]
    return true
}

在此输入图像描述

2.在我的例子中,富文本编辑器的属性一直在变化:

在这种情况下,我必须在输入任何内容后每次都设置输入属性.感谢iOS 11的更新!

但是,不是在textViewDidChange方法中设置它,而是在shouldChangeTextIn方法中更好地工作,因为在将字符输入到文本视图之前调用它.

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    textView.typingAttributes = [NSAttributedStringKey.foregroundColor.rawValue: UIColor.blue, NSAttributedStringKey.font.rawValue: UIFont.systemFont(ofSize: 17)]
    return true
}

在此输入图像描述


推荐阅读
author-avatar
过去丶真的過卜去
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有