首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不成为急救人员的情况下清除NSTextView选择?

如何在不成为急救人员的情况下清除NSTextView选择?
EN

Stack Overflow用户
提问于 2018-09-10 23:08:24
回答 1查看 309关注 0票数 3

我有一个基本的NSTextView应用程序,当一个文本视图失去焦点(即放弃其第一响应者状态)时,我想清除它的选择。

我的策略是扩展NSTextView并覆盖resignFirstResponder()

代码语言:javascript
复制
override func resignFirstResponder() -> Bool {

    // Both result in the text view becoming first responder again:
    clearSelection(nil)
    setSelectedRange(NSRange(location: 0, length: 0))

    return super.resignFirstResponder()
}

问题是调用clearSelection()setSelectedRange()都会导致文本视图再次成为第一响应者。

有没有一种方法可以在不成为第一响应者的情况下清除选择?

我还试图重写acceptsFirstResponder并临时返回false,但也不起作用。

EN

回答 1

Stack Overflow用户

发布于 2018-11-09 20:14:20

今天遇到了同样的问题,并找到了解决方案

您可以在NSTextView的委托方法textDidEndEditing中执行setSelectedRange,它不会导致NSTextView成为第一响应者。

代码语言:javascript
复制
class TextView: NSTextView {
    init() {
        self.delegate = self
        ....
    }
    ....
}

extension TextView: NSTextViewDelegate {
    public func textDidEndEditing(_ notification: Notification) {
        setSelectedRange(NSMakeRange(string.count, 0))
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52260742

复制
相关文章

相似问题

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