在IOS中显示警报时,键盘不会从View中退出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在IOS中显示警报时,键盘不会从View中退出相关的知识,希望对你有一定的参考价值。

ios 8中显示警报(密码错误)时,键盘会自动打开并隐藏alert(由于屏幕大小,只能在Iphone 4s中),因此我无法单击“确定”而我也无法关闭键盘,因为首先,我需要关闭alert

Keyboard hides alert

(似乎应用程序正在恢复最后一个键盘的状态并再次出现)

如何在调用alert之前关闭键盘?(这样状态将“关闭”)

我试过了:

myTextField!.resignFirstResponder()

在调用按钮时,但它没有工作,alert显示并自动键盘打开它!

答案

如果myTextField!.resignFirstResponder()无法正常工作,请在调用此警告之前尝试此操作 - > self.view.endEditing(true)

以上功能效果不好,试试

选择-1:使用响应者链

UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)

这将每次重新签署第一个响应者(并解除键盘),而无需将resignFirstResponder发送到正确的视图。无论如何,这都会解雇键盘。到目前为止,这是最好的方法:不用担心第一响应者是谁

选择-2:UIView的endEditing

(假设您的文本字段是您调用此视图的子视图)。大多数时候:

self.view.endEditing(true)
另一答案

Delegate设为myTextField

包括

func textFieldShouldReturn(textField: UITextField) -> Bool
    {
        textField .resignFirstResponder()
        return true
    }

其他明智的尝试以下

var activeField : UITextField!

    func textFieldDidBeginEditing(textField: UITextField)
    {
        activeField = textField
    }
    func textFieldDidEndEditing(textField: UITextField)
    {
        activeField = nil
    }
    func textFieldShouldReturn(textField: UITextField) -> Bool
    {
        textField .resignFirstResponder()
        return true
    }

在警报出现之前调用activeField.resignFirstResponder()

另一答案

我想从iOS8你需要使用UIAlertController而不是UIAlertView。在iOS8及更高版本中使用UiAlertView会导致键盘不必要地弹出。我已经看到了这个,我提出了使用UIAlertController for iOS8及以上版本的条件。在下面的版本UIAlertView应该工作正常

另一答案

这是iOS 8上的UIAlertView错误。我有同样的问题,但UIAlertController没有问题。 :3

自iOS8以来,UIAlertView已被弃用。

https://developer.apple.com/reference/uikit/uialertview

另一答案

在Swift 4中:下面的代码对我有用

    DispatchQueue.main.async() {
        self.view.endEditing(true)
    }

以上是关于在IOS中显示警报时,键盘不会从View中退出的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS8.3 上显示警报视图时,iOS 键盘通知不必要地触发

InputAccessoryView之后的iOS程序流程

Swift 中显示 UIAlertcontroller 时保持键盘打开?

从 iOS 14 开始,我的应用程序仅在使用调试器或使用 iOS 13 的设备时才显示图像。此外,键盘不会显示所有键

jquery 确认和退出功能

如何在 iOS 中触发通知时打开警报视图?