如何制作带有左或右指示符的 NSTextfield 以进行验证?

How can I make a NSTextfield with left or right indicator for validation?

我需要用这样的指示器制作自定义 NSTextField:

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

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

制作这个需要什么代码?

谢谢大家。

编辑

文本永远不能与图标重叠。图标不是一直显示的,但是在书写的时候可以显示,而且文字正确的时候,这个文字也必须占据图标的位置。

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

不幸的是,有些绘图的完成方式有点私密,不容易摆弄,但主要是 drawWithFrame:inView: 将绘制背景,然后调用 drawInteriorWithFrame:inView: 绘制文本。在我的脑海中,我不记得 NSTextFieldCell 是否使用 titleRectForBounds: 来确定文本的边界是什么,但我很确定它是。因此,您可以将其覆盖为 return 一个更窄的矩形,留出空间来使用单元格本身绘制验证图标,或使用子视图。

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

的框架

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