【问题标题】:Restrict UITextField size限制 UITextField 大小
【发布时间】:2009-08-01 09:21:56
【问题描述】:

如何限制 UITextField 中的字符数?

即如果我将其限制为 10 个字符,则用户将无法输入超过 10 个。另外我想阻止他输入一些特殊字符,如 +、= 等。

我该怎么做?

【问题讨论】:

标签: objective-c cocoa-touch uitextfield


【解决方案1】:

这是一个限制 UITextField 大小的代码示例:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  if ([[textField text] length] + [string length] - range.length > MAX_LENGTH) {
    return NO;
  } else {
    return YES; 
  }
}

【讨论】:

    【解决方案2】:

    您可以使您的视图控制器符合UITextFieldDelegate protocol 并实现textField:shouldChangeCharactersInRange:replacementString: - 每当用户在文本字段中键入新字符或删除现有字符时都会调用它。

    然后,您可以检查用户刚刚输入的字符的有效性,返回 NO 以查找任何无效字符(例如您的问题中的 +、=)。

    blog post 中有一个例子。

    【讨论】:

      【解决方案3】:

      这对我有用。

      -(BOOL)textFieldShouldReturn:(UITextField *)textField
      {   
      
          if([textField.text length]<=8){
          [tf resignFirstResponder];       
              return YES;
          }
          else
              return NO;
      }
      

      【讨论】:

        【解决方案4】:

        如果你想主动限制用户输入字符,你要做的是为 UITextField 设置一个委托来处理事件,然后查看 textDidChange 通知。然后,您可以在每次更改时查看输入的文本,如果输入了任何不需要的字符(或超出所需限制的额外字符),您可以将其删除。

        查看此处了解更多信息: http://discussions.apple.com/thread.jspa?messageID=6971952

        【讨论】:

        • 我认为 UITextFieldDelegate 中没有 textDidChange 通知
        【解决方案5】:

        尝试为您的 UITextField 使用 UIKeyboardTypeNamePhonePad。上面只有字母和数字:

        textField.keyboardType = UIKeyboardTypeNamePhonePad;
        

        【讨论】:

        • 如果用户有蓝牙键盘,他们可以输入任何字符,这不限制他们
        猜你喜欢
        • 2017-06-20
        • 2014-12-22
        • 1970-01-01
        • 2011-11-21
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 2012-10-16
        • 2011-03-27
        相关资源
        最近更新 更多