21

您好我正在使用 iPhone 应用程序,我知道 UITextfield 具有占位符属性。但是 UITextview 没有占位符属性。我知道如何为 UITextview 自定义占位符的过程。但请让我知道其中的区别。

UITextfield 继承自 UIControl,而 UIControl 又继承自 UIView...NSObject。而 UITextview 继承自 UIScrollView、UIView、UIresponder...NSOBject。但是与占位符属性的区别在哪里。

textfield 如何包含占位符属性,为什么 textview 不包含占位符?

请给出任何想法、建议和/或给出更好的解释。

4

2 回答 2

52

我不知道为什么 Apple 没有在 UITextView 上包含 placeHolder 属性。但是我能够使用包含占位符文本的 UILabel 子视图添加一个。

然后在委托回调中显示或隐藏它,如下所示

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    self.defaultLabel.hidden = YES;
}

- (void)textViewDidChange:(UITextView *)txtView
{
    self.defaultLabel.hidden = ([txtView.text length] > 0);
}

- (void)textViewDidEndEditing:(UITextView *)txtView
{
    self.defaultLabel.hidden = ([txtView.text length] > 0);
}
于 2013-04-08T14:27:17.510 回答
27

为什么UITextField具有占位符值,UITextView与它们的继承甚至编程无关。这是关于苹果如何看待他们的使用并更喜欢他们的使用。

UITextField是一个单行项目。它可用于输入用户名、密码、地址位或几乎任何东西。通常,您会将其中几个聚集在一起,并且可能很难确定哪个字段应该包含哪些数据而没有占位符文本。占位符让我们知道该字段的用途。

文本字段示例

UITextView是一个文本块。通常是几行,通常有一个与之关联的标题。因此,占位符文本通常没有用处。文本视图也更有可能填充静态文本,这再次使占位符文本没有真正有用。

我认为苹果应该添加一个占位符属性UITextView吗?是的。在我需要的时候必须自己做是很烦人的。Apple 还在某些使用UITextView. 以下示例来自添加日历条目。

带有占位符的文本视图示例

于 2013-04-08T14:38:21.803 回答