向UITextField添加文本无法删除

时间:2013-04-19 11:22:17

标签: ios objective-c cocoa-touch uitextfield

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

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

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

    return YES;
}

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

3 个答案:

答案 0 :(得分:2)

您可以在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;
}

答案 1 :(得分:1)

Checkout shouldChangeCharactersInRange在UITextFieldProtocolReference

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
  每当用户键入新文本时,

文本字段都会调用此方法   文本字段中的字符或删除现有字符。

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

答案 2 :(得分:0)

使用此

  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([[textField text] length]==LENGTH_OF_TEXT && [string isEqualToString:@""])
    {
        return NO;
    }
else 
return YES;
}

希望它对你有所帮助。