【问题标题】:How to set Minimum and Maximum limit to Uitextfield?如何为 Uitextfield 设置最小和最大限制?
【发布时间】:2014-12-22 07:55:18
【问题描述】:

我需要为单个文本字段设置最小和最大限制值,即数字应以最小 2 位和最大 5 位开头,我尝试了一些方法

-(BOOL)validatenumber:(NSString*)Number{

if ([Number length ]>=2)  {
    return NO;
}

return YES;

}

【问题讨论】:

标签: ios objective-c iphone swift uitextfield


【解决方案1】:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{

NSInteger inte = [textField.text intValue];
if (inte <5 && inte > 2)

    return NO;
else 
    return YES;
}

斯威夫特

override func textFieldShouldReturn(textField: UITextField) -> Bool {
var inte: Int = CInt(textField.text!)!
if inte < 5 && inte > 2 {
    return false
}
else {
    return true
}
}

【讨论】:

  • r u 计算文本字段的范围 na
  • @HariNarayanan - 这个问题不是基于问题请求的常见问题我回答了你工作的场景和你面临的问题
  • - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 我使用这种方法来计算范围,但是当我使用时 - (BOOL )textFieldShouldReturn:(UITextField *)textField { 它不工作
  • @HariNarayanan - 我没有添加这个场景
  • @HariNarayanan - 你需要像shouldChangeCharacte‌这样的答案
【解决方案2】:
if ([amount.text length]>=2 && [amount.text length]<=5) {
    }else{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    return;
}

【讨论】:

    【解决方案3】:

    根据您的需要稍作修改尝试一下。这还将处理删除文本字段中的第一个元素以设置最小值,并且不允许输入小于最小值或大于最大值。

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    
        if let manualInputText = textField.text, let range = Range(range, in: manualInputText) {
    
            let inputText = manualInputText.replacingCharacters(in: range, with: string)
            let minValue = 0 //your value
            let maxValue = 10 //your value
    
            if inputText.isEmpty {
                textField.text = "\(minValue)"
                return false
            } else if textField.text == "0" {
                textField.text = string
                return false
            }
            if let inputValue = Int64(inputText), (inputValue >= minValue), (inputValue <= maxValue) {
                    return true
            }
        }
        return false
    }
    

    如果您需要任何修改,请发表评论。

    【讨论】:

      【解决方案4】:

      我会首先检查你是否可以从你的字符串中解析一个数字,然后检查数字的范围

      -(BOOL)validatenumber:(NSString*)Number{
      
          NSCharacterSet *characterSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789,."] invertedSet];
          if ([Number rangeOfCharacterFromSet:characterSet].location != NSNotFound)
          {
              return NO;
          }
      
          return ([Number intValue] >= 100 && [Number intValue] <= 99999);
      }
      

      将委托设置为您的 UITextField。并在用户在函数func textFieldDidEndEditing(_ textField: UITextField) 中完成编辑您的 UITextField 时运行验证。如果验证失败,向用户显示弹出警报

      【讨论】:

      • 感谢@anthonyliao 的回复,但此方法不起作用,实际上在该数量的文本字段中,用户必须输入 min 10RS 和 max 99999Rs 如果用户输入低于 10rs 和高于最大值意味着我有显示警报视图
      • if (![self validateTopUpAmpont:amount.text]) { } else { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs"委托:自我取消按钮标题:@“OK”其他按钮标题:无,无]; [警报显示];返回; }
      • 你设置textField.delegate = self了吗?
      猜你喜欢
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      相关资源
      最近更新 更多