gpt4 book ai didi

macos - 如何在没有子类化的情况下绘制 cocoa 聚焦环?

转载 作者:行者123 更新时间:2023-12-03 16:20:06 25 4
gpt4 key购买 nike

我想在控件周围绘制一个合适的、现代的动画聚焦环,根据Q&A 1785 ,应该是重写 -drawFocusRingMask 和 -focusRingMaskBounds 方法的简单问题。

问题是,对于这个项目我必须使用 Xojo ,它可以声明和调用 Cocoa 方法,但没有给我任何机会来实际创建我自己的 View 子类。

那么,有没有办法在不创建实际子类的情况下获得合适的聚焦环?可能在本 10.7 技术说明之后引入的一些其他方法可以完成工作?或者某种在运行时将方法注入(inject)现有类的偷偷摸摸的方法?

最佳答案

正如一条评论所建议的,如果您想添加可选协议(protocol)方法,class_addMethod() 是正确的。公共(public) macoslib 项目有一些代码展示了如何做到这一点,只需搜索该名称即可。

但是,如果该功能已经实现,则无法添加另一个功能。在这种情况下,方法混合就是解决方案。将选择器的函数地址替换为另一个,然后调用原始函数地址是一种常见的方法。

不过,我手头上似乎没有 Xojo 的示例。

更新

对于标准 Cocoa 控件,最简单的解决方案是相应地设置 NSView 属性 focusRingType(在 macoslib 中提供)。仅自定义控件需要实现drawFocusRingMask

关于macos - 如何在没有子类化的情况下绘制 cocoa 聚焦环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47184398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com