9

我正在尝试实现这个 SO question的答案。问题是:-[drawTextInRect]显然没有被调用,并且设置阴影-[drawRect]不会使 UITextField 的文本被遮蔽。

另一个奇怪的事情是,即使我的子类实现-[drawTextInRect]-[drawRect]完全是空的(甚至没有调用 super),文本字段的文本也会被绘制。

4

5 回答 5

12

这是UITextFieldAPI 文档中的错误。该文档表明drawTextInRect:可以使用覆盖来自定义行为。不是这种情况。

事实上,drawTextInRect:将永远不会被调用UITextFielddrawPlaceholderInRect:顺便说一句,也不会被调用)。

另请参阅http://discussions.apple.com/thread.jspa?threadID=1727596

但是,覆盖该方法UILabel

于 2010-04-05T23:57:33.053 回答
4

我想你正在寻找的方法是:

- (CGRect)textRectForBounds:(CGRect)bounds

或者可能

- (CGRect)editingRectForBounds:(CGRect)bounds
于 2013-02-26T14:25:01.260 回答
3

我注意到 -[drawTextInRect] 在 UITextField 失去焦点时被调用一次。不是我想要的。

于 2012-06-28T13:47:35.573 回答
0

UITextField 不响应- drawTextInRect:消息。您引用的页面上的代码子类 aUILabel不是 a UITextField,这就是它对您不起作用的原因。

于 2010-03-06T02:38:23.023 回答
-1

如果您不调用 super,编译器可能会在优化代码期间删除该方法。实际上意味着 UILabel 的实现被调用。


更新:如果您使用笔尖创建文本字段,请确保您已将笔尖中文本字段的类设置为您的自定义子类,否则您的自定义代码将不会被调用。

于 2010-01-07T01:31:46.183 回答