在通过数据源创建的 UITextField 中显示占位符文本
Posted
技术标签:
【中文标题】在通过数据源创建的 UITextField 中显示占位符文本【英文标题】:Displaying placeholder text in UITextField created through data source 【发布时间】:2013-01-02 04:49:27 【问题描述】:背景: 我有一个 UITableView,它有三行,其中包含从 TableDataSource 填充的自定义 UITextFields。这些文本字段中的默认文本也是从数据源填充的(数据库字段的默认值)。
当用户选择/单击特定的 UITextField 时,我能够自动清除 UITextField。
问题: 如果用户选择了一个特定的 UITextField 但随后移动到另一个 UITextField 而不编辑文本,那么我希望原始的默认文本重新出现。我尝试在委托的“didEndEditing”方法中将 UITextField 设置为 nil,但没有成功。
如果有人知道实现此目的的方法,可以请教一下吗?
【问题讨论】:
【参考方案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 属性。自动设置此属性可确保占位符文本消失并根据用户执行的编辑重新出现。在试图找出用户输入/未输入的内容方面,省去了很多工作。
【讨论】:
以上是关于在通过数据源创建的 UITextField 中显示占位符文本的主要内容,如果未能解决你的问题,请参考以下文章
如何使我在 UIAlertController 内的 UITextField 中输入的数据通过 Swift 中的重置持续存在?
点击 UITextField 在 UITableView 中显示数据