【问题标题】:Adding text to UITextField you can't delete将文本添加到您无法删除的 UITextField
【发布时间】: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 - 我认为他只想禁用部分文本可编辑。因此,他需要挂钩到文本更改的决策过程

标签: ios objective-c cocoa-touch uitextfield


【解决方案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 答案已经有效!无论如何感谢您的努力!
      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多