您好我正在使用iPhone应用程序,我知道UITextfield有占位符属性。但是UITextview没有占位符属性。我知道如何为UITextview自定义占位符的过程。但请让我知道其中的区别。
和UITextfield继承自UIControl,其内容继承自UIView ... NSObject。 和UITextview继承自UIScrollView,UIView,UIresponder ...... NSOBject。但是,持有人财产的区别在哪里。
textfield如何包含占位符属性,为什么textview不包含占位符?
请提供任何想法,建议和/或提供更好的解释。
答案 0 :(得分: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);
}
答案 1 :(得分:26)
为什么UITextField
具有占位符值,UITextView
与其继承,甚至编程无关。这是关于Apple如何看待他们的使用并且更喜欢使用它们。
UITextField
是一个单行项目。它可用于输入用户名,密码,地址位或几乎任何东西。通常你会把它们中的几个聚集在一起,而且如果没有占位符文本,可能很难确定哪个字段应该具有哪些数据。占位符让我们知道该领域的目的。
UITextView
是一个文本块。通常有几行,通常有一个与之关联的标题。因此,占位符文本通常没用。文本视图也更可能使用静态文本填充,这也会使占位符文本无法真正有用。
我认为Apple应该为UITextView
添加占位符属性吗?是。在我需要的时候必须自己制作它是很烦人的。 Apple还在一些使用UITextView
的地方使用占位符文本。以下示例来自添加日历条目。