首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可: NSTextStorageDelegate有过时的NSLayoutManager?

可可: NSTextStorageDelegate有过时的NSLayoutManager?
EN

Stack Overflow用户
提问于 2010-10-31 15:39:32
回答 1查看 362关注 0票数 1

我正在使用一个NSTextView,并为它的-textStorage属性设置了一个委托。在收到-textStorageDidProcessEditing:后,我需要将属性应用到文本的各个部分。

我的属性正在被应用,但是在我编辑之前,它们总是应用于文本,即使我不是从-will...而是从did...调用NSLayoutManager的方法。

就好像布局管理器在执行的此时不知道最近的字形插入/删除一样,所以我假设NSTextView/NSTextStorage调用委托方法,然后通知布局管理器更新。

有什么方法可以迫使布局管理器立即更新,这样我才能让它正常工作吗?

我知道NSTextStorage-addAttribute:value:range:方法,并且一直在成功地使用这些方法,但我已经到了需要通过布局管理器而不是作为重构/优化练习的一部分来完成这些工作的时候了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-02 02:43:23

我找到了解决这个问题的办法。如果您注册为NSTextStorage的-textStorageDidProcessEditing:和NSLayoutManager的-didInvalidateLayout:通知的委托,那么您可以有效地“队列”来自文本存储委托的操作,这只能在布局管理器接收到安全的通知时运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4063750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档