swift - 如何处理 mouseEntered:带有圆角的 NSView 上的事件
问题描述
我正在创建一个具有圆角的视图,并且我希望当鼠标悬停在视图上时该视图突出显示。问题是当鼠标在角落之外时NSTrackingArea
注册一个事件。mouseEntered:
有没有办法覆盖它如何确定它是否在视图中?
我试过了:
- 添加
.inVisibleRect
到NSTrackingArea.Options
- 覆盖
isMousePoint:in:
如有必要,我可以实现mouseEntered:
忽略其点不在矩形内的所有事件,但我想知道是否有更优雅的方式(即mouseEntered:
只有当鼠标实际进入视图时才调用哪里)。
这是我用于绘图的代码(它适用于我):
...
override func draw(_ dirtyRect: NSRect)
{
let path = NSBezierPath(roundedRect: dirtyRect, xRadius: radius, yRadius: radius)
path.addClip()
backgroundColor.setFill()
dirtyRect.fill()
}
...
override func mouseEntered(with event: NSEvent)
{
print("Mouse entered!")
}
让我知道我是否可以澄清任何事情。谢谢您的帮助!
解决方案
您可以保存路径并event
使用 . 检查点是否在内部containsPoint(point: CGPoint)
。有关更多信息,请参见此处。
推荐阅读
- javascript - 无法使用 cypress 自动化工具触发点击导航菜单
- python - 模型中的 Keras 层命名不遵循 TF name_scope 前缀
- azure - 有没有办法使用 Ngrok 将 Azure 机器人服务连接到本地托管的机器人?
- r - 如何增加 ggplot2 图例大小以将图形导出为 png?
- java - 在 DatePicker - Android 中设置默认日期(其他格式)
- jquery - 在移动设备上将 Woocommerce 选项卡修改为手风琴
- kubernetes - 自动配置不创建新节点池
- android - 在 Android 中读取用户安装的证书
- python - DEAP: mutPolynomialBounded 函数中的 indpb 参数有什么作用?
- apache-camel - 如何启用从文件消费者到 JMS 生产者的骆驼交易?