当放置在 NSWindow 的顶部附近时,NSTextView 不起作用
NSTextView doesn’t work when placed near the top of an NSWindow
上下文
我有一个 window 和一个 fullSizeContentView
以及一个透明的标题栏和一个隐藏的标题栏。
我什至不想要标题栏,但我必须让它在 NSWindow
.
上得到圆角
问题
一个 NSTextView
,当放置在顶部边缘附近时,不会对 任何 点击做出反应。它不允许我 select 任何文本,也不允许我单击 link 我通过 NSAttributedString 添加的内容。
当我完全禁用标题栏时,这个问题就消失了。
任何帮助将不胜感激。谢谢!
大背景
我正在尝试实现显示外围设备状态更新的小“in-app 通知”。我考虑过使用 NSAlert 但我不想阻止用户在显示通知时与界面的其余部分进行交互,所以我决定自己实现它。
通知很少,non-movable windows 没有标题栏。它们基本上只是带有圆角的灰色矩形和在主应用程序 window 内部绘制的阴影,并包含一行或几行文本。第一行文本几乎完全在不可见的标题栏后面,这就是我遇到问题的原因。
除了显示文本外,我唯一需要通知做的事情是 link 到包含有关通知消息的更多信息的网页。
我觉得我可能处理错了。如果您对如何解决问题有任何建议或想法,我很想听听。谢谢!
我终于明白了!
我把它钉在 NSScrollView
的 contentInsets
上。 (由于某种原因,在 Interface Builder 中创建它时,您被迫在 NSTextView
周围使用它)
contentInsets
被自动设置为说明不可见的标题栏,即使文档说 NSScrollView - automaticallyAdjustsContentInsets
(默认设置为 YES,我认为这是造成这种情况的原因)不执行自动插入用于透明标题栏。
以编程方式将 scrollView 的 contentInsets
设置为 0 后,一切正常!
在 Objective C 中,您可以像这样将 scrollView 的 contentInsets
设置为 0:
NSScrollView *scrollView = (NSScrollView *)self.textView.superview.superview;
scrollView.automaticallyAdjustsContentInsets = NO; // Doesn't remove insets // Probably calling this too late
scrollView.contentInsets = NSEdgeInsetsMake(0, 0, 0, 0);
Here 是一个工作示例。
希望对您有所帮助!
上下文
我有一个 window 和一个 fullSizeContentView
以及一个透明的标题栏和一个隐藏的标题栏。
我什至不想要标题栏,但我必须让它在 NSWindow
.
问题
一个 NSTextView
,当放置在顶部边缘附近时,不会对 任何 点击做出反应。它不允许我 select 任何文本,也不允许我单击 link 我通过 NSAttributedString 添加的内容。
当我完全禁用标题栏时,这个问题就消失了。
任何帮助将不胜感激。谢谢!
大背景
我正在尝试实现显示外围设备状态更新的小“in-app 通知”。我考虑过使用 NSAlert 但我不想阻止用户在显示通知时与界面的其余部分进行交互,所以我决定自己实现它。
通知很少,non-movable windows 没有标题栏。它们基本上只是带有圆角的灰色矩形和在主应用程序 window 内部绘制的阴影,并包含一行或几行文本。第一行文本几乎完全在不可见的标题栏后面,这就是我遇到问题的原因。
除了显示文本外,我唯一需要通知做的事情是 link 到包含有关通知消息的更多信息的网页。
我觉得我可能处理错了。如果您对如何解决问题有任何建议或想法,我很想听听。谢谢!
我终于明白了!
我把它钉在 NSScrollView
的 contentInsets
上。 (由于某种原因,在 Interface Builder 中创建它时,您被迫在 NSTextView
周围使用它)
contentInsets
被自动设置为说明不可见的标题栏,即使文档说 NSScrollView - automaticallyAdjustsContentInsets
(默认设置为 YES,我认为这是造成这种情况的原因)不执行自动插入用于透明标题栏。
以编程方式将 scrollView 的 contentInsets
设置为 0 后,一切正常!
在 Objective C 中,您可以像这样将 scrollView 的 contentInsets
设置为 0:
NSScrollView *scrollView = (NSScrollView *)self.textView.superview.superview;
scrollView.automaticallyAdjustsContentInsets = NO; // Doesn't remove insets // Probably calling this too late
scrollView.contentInsets = NSEdgeInsetsMake(0, 0, 0, 0);
Here 是一个工作示例。
希望对您有所帮助!