作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Cocoa 应用程序,它显示一个类似于 Spotlight 的“快速搜索”窗口。该窗口包含一个视觉效果 View 和一个 NSTextField
内部。文本字段延伸到窗口的整个宽度。
我希望能够通过在文本字段的空白区域内拖动来移动窗口。当在文本字段中的文本上拖动时,应使用正常的编辑(即选择)行为。
理论上,通过背景移动窗口很容易:
window.isMovableByWindowBackground = true
但是,此行为不适用于 NSTextField
,因为它会拦截拖动并尝试选择文本。
Spotlight 以某种方式做到了这一点。这是一个例子:
我考虑过但没有成功的几个选项:
hitTest:
返回 nil
mouseDown|Up|Dragging:
并转发到superview
最佳答案
供引用,我终于找到了方法:
第 1 部分:让 NSTextField 随其内容增大/缩小
覆盖intrinsicContentSize
并测量其内容:
private func measure(_ string:NSAttributedString) -> NSSize
{
let cell = NSTextFieldCell(textCell: stringValue)
cell.attributedStringValue = string
return cell.cellSize
}
第 2 部分: View 设置
第三部分:所有细节
iBeam
光标使其看起来像文本字段就是这样。
关于cocoa - 使 NSWindow.isMovableByWindowBackground 与 NSTextField 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46252769/
我有一个 Cocoa 应用程序,它显示一个类似于 Spotlight 的“快速搜索”窗口。该窗口包含一个视觉效果 View 和一个 NSTextField 内部。文本字段延伸到窗口的整个宽度。 我希望
我是一名优秀的程序员,十分优秀!