【问题标题】:IPad - how to only type 0~9 on textfield?iPad - 如何在文本字段上只输入 0~9?
【发布时间】:2011-08-21 08:59:09
【问题描述】:

你好
我知道 ipad 键盘不喜欢 iphone 可以设置“UIKeyboardTypeNumberPad”!!
但如果我想要它只能在文本字段上键入并显示数字 0 到 9。
如何比较文本字段上的用户键是数字还是不是数字?

提前致谢。

迷你

【问题讨论】:

标签: xcode ipad uitextfield


【解决方案1】:

How to dismiss keyboard for UITextView with return key?怎么样?

这个想法是你每次用户点击一个键时检查,如果它是一个数字,让它通过。否则忽略它。

让你的Controller支持UITextViewDelegate协议并实现textView:shouldChangeTextInRange:replacementText:方法。

【讨论】:

    【解决方案2】:

    看看this 线程。它解决了我的类似问题。

    【讨论】:

      【解决方案3】:

      不要在显示后比较图形,而是在 shouldChangeCharactersInRange 中进行比较

      请务必声明委托 UITextFieldDelegate,而我总是忘记,请确保 textField 本身的委托指向其中包含代码的类。

      //---------------------------------------------------------------------------
      - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
      {
          if ([string length] == 0 && range.length > 0)
          {
              textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
              return NO;
          }
      
          NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
          if ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0)return YES;
      
          return NO;
      }
      

      【讨论】:

      • 这是正确答案。它仍然显示其他字符,但只允许用户选择数字
      【解决方案4】:
      (BOOL) textField: (UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string {
      
          NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
          [nf setNumberStyle:NSNumberFormatterNoStyle];
      
          NSString * newString = [NSString stringWithFormat:@"%@%@",textField.text,string];
          NSNumber * number = [nf numberFromString:newString];
      
          if (number) {
               return YES;
      
          } else
              return NO;
      }
      

      【讨论】:

        猜你喜欢
        • 2020-07-14
        • 1970-01-01
        • 2017-01-22
        • 2016-06-30
        • 2015-06-11
        • 2020-03-03
        • 1970-01-01
        相关资源
        最近更新 更多