将文本添加到您无法删除的 UITextField

Posted

技术标签:

【中文标题】将文本添加到您无法删除的 UITextField【英文标题】:Adding text to UITextField you can't delete 【发布时间】:2013-04-19 11:22:16 【问题描述】:

我想做的是在UITextField 的开头添加一些无法删除的文本。当用户像这样点击UITextField 时,我会添加此文本:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

    if (textField.text.length == 0) 
        textField.text = @"myText";
    

    return YES;

如何防止用户以正常方式删除此文本? (例如,没有在 TextField 顶部添加单独的 UILabel)。 提前致谢!

【问题讨论】:

您不想在向文本字段中添加任何文本后删除,对吧?如果是.. 做 userInteractionEnables=NO.. 就是这样。 @VSN - 我认为他只想禁用部分文本可编辑。因此,他需要挂钩到文本更改的决策过程 【参考方案1】:

您可以在shouldChangeCharactersInRange委托方法中实现此代码。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

    if (textField.text.length == 1 && [string isEqualToString:@""]) //When detect backspace when have one character. 
        textField.text = @"myText";
    
    return YES;

【讨论】:

【参考方案2】:

结帐UITextFieldProtocolReference中的shouldChangeCharactersInRange

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

每当用户输入新的文本时,文本字段都会调用此方法 文本字段中的字符或删除现有字符。

因此,您可以控制文本是否实际发生更改,以便您可以在该委托回调中插入自定义逻辑,以强制执行有关可以更改内容的任何规则。

【讨论】:

【参考方案3】:

使用这个

  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

    if ([[textField text] length]==LENGTH_OF_TEXT && [string isEqualToString:@""])
    
        return NO;
    
else 
return YES;

希望对你有帮助。

【讨论】:

不需要,先生,@mani 答案已经有效!无论如何感谢您的努力!

以上是关于将文本添加到您无法删除的 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

无法将 UITextField 添加到 UIScrollView

在 UITextField 中添加删除绑定(绑定删除)

UITEXTFIELD 无?

UITextField 键盘无法输入任何内容

如何将 UI 对象(图像)添加到 UITextView 或 UITextField?

让按钮快速将文本添加到 UITextField