繁体   English   中英

如何使用带有左或右指示符的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:来确定文本的边界是什么,但是我非常确定。 因此,您可以覆盖该值以返回更窄的矩形,从而留出空间来使用单元格本身绘制验证图标,或者使用子视图。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM