【问题标题】:iphone check if UITextField exists using Tagiphone使用标签检查UITextField是否存在
【发布时间】:2023-04-02 02:19:02
【问题描述】:

有没有办法使用 Tag 属性来检测 UITextField 是否存在?本质上,我有许多动态创建的文本字段,我想使用键盘上的返回键来浏览这些字段。

我正在尝试在另一篇文章中使用以下代码,但“textField.superview”返回 null。我正在以编程方式创建文本字段。

-(BOOL)textFieldShouldReturn:(UITextField*)textField;
{
  NSInteger nextTag = textField.tag + 1;
  // Try to find next responder
  UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
  if (nextResponder) {
    // Found next responder, so set it.
    [nextResponder becomeFirstResponder];
  } else {
    // Not found, so remove keyboard.
     [textField resignFirstResponder];
  }
  return NO; // We do not want UITextField to insert line-breaks.
}

【问题讨论】:

  • 我认为我的回答对你有用

标签: iphone uitextfield uiresponder


【解决方案1】:

你可以这样直接检查

       -(BOOL)textFieldShouldReturn:(UITextField*)textField {
             if (textField.tag == 1) {
             //Do the stuff what you want here
             }
        }

用于设置标签

        textFieldName.tag = 1;

【讨论】:

  • 我需要做的是使用标签检查是否存在具有给定 int 的文本字段。我在创建它们时设置了标签。所以我会做类似 NSInteger nextTag = textField.tag + 1;在 textFieldShouldReturn 但我需要查看是否确实存在具有 nextTag 值的字段。我该怎么做?
【解决方案2】:

你可以使用 isKindofClass: 方法。你可以这样做

 if ([[textField.superview viewWithTag:nextTag] isKindOfClass:[UITextField class]])
  {
    // Found next responder, so set it.
    [(UITextField *)[textField.superview viewWithTag:nextTag] becomeFirstResponder];
  } else {
    // Not found, so remove keyboard.
     [textField resignFirstResponder];
  }
  return NO; // We do not want UITextField to insert line-breaks.
}

【讨论】:

    【解决方案3】:

    您是否设置了文本字段的标签?标签字段不会自动设置,您必须在创建文本字段时自行设置,以便以后识别。如果你不设置它,它们都默认为 0 - 所以你永远不会找到任何文本 > 0 的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-20
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      相关资源
      最近更新 更多