【问题标题】:Displaying placeholder text in UITextField created through data source在通过数据源创建的 UITextField 中显示占位符文本
【发布时间】:2013-01-02 04:49:27
【问题描述】:
背景:
我有一个 UITableView,它有三行,其中包含从 TableDataSource 填充的自定义 UITextFields。这些文本字段中的默认文本也是从数据源填充的(数据库字段的默认值)。
当用户选择/单击特定的 UITextField 时,我能够自动清除 UITextField。
问题:
如果用户选择了一个特定的 UITextField 但随后移动到另一个 UITextField 而不编辑文本,那么我希望原始的默认文本重新出现。我尝试在委托的“didEndEditing”方法中将 UITextField 设置为 nil,但没有成功。
如果有人知道实现此目的的方法,可以请教一下吗?
【问题讨论】:
标签:
ios
uitableview
uitextfield
uitextfielddelegate
【解决方案1】:
你可以使用UITextField的placeholder属性简单地做到这一点,但是文字会显得有点模糊,如果你想显示之前的值那么你可以使用以下解决方案:
您可以使用textFieldDidEndEditing 委托方法来做到这一点。
- (void)textFieldDidEndEditing:(UITextField *)textField
{
if(textField.text.lenght == 0)
{
textField.text = yourPreviousText;
}
}
在textFieldShouldBeginEditing
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
yourPreviousText = textField.text;
}
yourPreviousText 是在类范围内声明的NSString 对象。
【解决方案2】:
解决方案:
我正在使用 UITextfield.text 属性设置占位符文本。我应该使用 UITextField.placeholder 属性。自动设置此属性可确保占位符文本消失并根据用户执行的编辑重新出现。在试图找出用户输入/未输入的内容方面,省去了很多工作。