如何使用左侧或右侧指示符进行验证的NSTextfield?

问题描述 投票:0回答:1

我需要使用如下指示器创建自定义NSTextField:

https://i.stack.imgur.com/LAhfA.png

在右侧,您可以看到指示器图标。

我需要用什么代码来做这个?

谢谢大家。

编辑

文本永远不会与图标重叠。图标并不总是显示,但可以在显示时显示,当文本正确时,此文本也必须占据图标的位置。

swift macos cocoa
1个回答
1
投票

文本字段控件是一个视图,其中绘图全部使用NSTextFieldCell完成。你需要做的是NSTextFieldCell的子类,并自定义绘图。看看NSCell的API,你会看到有一个drawWithFrame:inView:方法,这是整个领域的所有绘图。在该过程中使用NSCell的各种其他方法。

不幸的是,绘图的一些方式是有点私人而不是狡猾地摆弄,但主要的是drawWithFrame:inView:将绘制背景,然后调用drawInteriorWithFrame:inView:来绘制文本。在我的脑海中,我不记得NSTextFieldCell是否使用titleRectForBounds:来确定文本的界限,但我很确定它是。因此,您可以覆盖它以返回更窄的矩形,留出空间以使用单元格本身绘制验证图标,或使用子视图。

此外,您需要调整NSTextView字段编辑器绘制和编辑文本的范围,否则当您查看字段时它不是第一响应者它看起来会很好,但是当您编辑字段的文本时它将重叠图标。为此你可能需要调整给editWithFrame:inView:editor:delegate:event:的框架。

调整文本字段总是有点挑剔,因为找到所涉及的所有方法和代码路径需要一段时间,但这是你需要做的事情的要点。

© www.soinside.com 2019 - 2024. All rights reserved.