【发布时间】:2018-09-10 15:08:23
【问题描述】:
我有一个基本的 Cocoa 应用程序,其中包含多个 NSTextViews。当文本视图失去焦点(即放弃其第一响应者状态)时,我想清除其选择。
我的策略是扩展NSTextView 并覆盖resignFirstResponder():
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,但这也不起作用。
【问题讨论】:
-
我尝试了您的代码,
clearSelection无法编译,setSelectedRange无需更改第一响应者即可工作。
标签: cocoa appkit nstextview