【问题标题】:How to make text field "become first responder" in UIAlertView如何在 UIAlertView 中使文本字段“成为第一响应者”
【发布时间】:2017-02-22 23:53:38
【问题描述】:

我在 UIAlertView 中有两个文本字段。我希望第二个成为第一响应者,这样用户就不必点击它。显示警报视图后,我有以下代码:

[textField becomeFirstResponder];

唯一的问题是它不起作用。第一个文本字段中有打字机。有任何想法吗?感谢您的帮助。

【问题讨论】:

    标签: iphone objective-c ios ipad uialertview


    【解决方案1】:

    我在尝试将焦点设置到 UIAlertView 中的密码字段时遇到了同样的问题(我正在预先填充用户名)。我不得不使用委托方法:

    - (void)didPresentAlertView:(UIAlertView *)alertView {
        UITextField *textField = [alertView textFieldAtIndex:0];
        [textField becomeFirstResponder];
    }
    

    如果我在 willPresentAlertView 上尝试过,或者当我创建 alertView 时,它不起作用,只能在 didPresentAlertView 上尝试。我希望这会有所帮助。

    【讨论】:

    • 这正是我所需要的 UIAlertViewStyleLoginAndPasswordInput AlertView 样式。只希望我没有看到它改变领域。虽然在 willPresent 中尝试过,但它不会承认该字段。
    • 我在 didPresentAlertView 中尝试过,但没有成功。
    • 现在可能不一样了,iOS8 中 UIAlertViews 已经改为展示视图了。
    • 请注意,在上面的解决方案中,它会查找 textFieldAtIndex:1。为了安全起见,我建议您在执行上述代码之前先测试该文本字段是否存在于索引 1 处。最后你可能要测试 textFieldAtIndex:0
    • 同样,我有一个 alertView,我添加了几个文本字段。我刚刚将第一个文本字段分配给一个属性,以在此委托方法中将其设置为 firstResponder。此外,它在 iOS8 之后仍然有效;在 10 和 11 确认。谢谢!
    【解决方案2】:

    您必须创建一个警报并向其添加一个 UITextField。然后,您可以将新的文本字段指定为您的第一响应者,这将在键盘上显示您的警报。

    这可能是您正在寻找的故事。

    Alert View with Prompt

    【讨论】:

      【解决方案3】:

      标记的答案是正确的,我只是添加了与我上面的评论相关的更多说明,这是代码;在使用之前测试该字段是否存在并查看索引 0:

          if ([alertView textFieldAtIndex:0])
          {
              UITextField *textfield = [alertView textFieldAtIndex:0];
              [textfield becomeFirstResponder];
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 2020-08-24
        • 1970-01-01
        • 2012-01-05
        • 2013-11-26
        • 2016-07-07
        • 1970-01-01
        相关资源
        最近更新 更多