【问题标题】:How to set max string length for UIAlertView text field如何为 UIAlertView 文本字段设置最大字符串长度
【发布时间】:2012-11-11 22:47:13
【问题描述】:

如何设置在UIAlertView 中创建的文本字段的最大字符串长度?我正在使用 Xcode 4.5 并在 10.8 (OS X) 上构建应用程序目前我有UIAlertView,当用户单击按钮时会启动。用户将扫描他们的 RFID 徽章,并且我希望 UIAlertView 的输入文本字段限制为 10(十)个字符,这样用户就无法伪造关联过程。

【问题讨论】:

    标签: objective-c ios xcode uialertview textfield


    【解决方案1】:

    可以在textField的委托方法中查看文本的长度:

    textField:shouldChangeCharactersInRange:replacementString:
    

    如果您不想更改,则返回 NO。

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

    【讨论】:

    • 这个逻辑不正确。应该是if (textField.text.length - range.length + string.length > 10)。范围的位置无关紧要。而且您没有考虑当前文本或新文本。示例 - 插入符号位于没有选择的文本开头,然后我粘贴了 20 个字符。您的代码仍然返回 YES。
    • 我实现了上面的方法,但是我仍然可以输入10多个字符。
    • 我实际上更喜欢你的逻辑而不是我下面的回答。更具可扩展性。要删除我的。 ;-) ... edit 猜它不会让我。
    【解决方案2】:

    看起来上面的答案是几乎正确的。

    键入单个字符时,range.length(对于此方法)似乎始终为零,而位置会增加。

     - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
          NSLog(@"Range: %@", NSStringFromRange(range));
          return ( range.location < 10 );
    
     }
    

    edit:如果你做的不是单字符输入,比如粘贴一行等,长度可能会更长。

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多