在 IOS 中显示警报时,键盘不会退出视图
While displaying an alert in IOS, keyboard does not resign from View
在 IOS 8 中显示警报(密码错误)时,键盘会自动打开并隐藏 alert
(由于屏幕大小,只需要 Iphone 4 秒),所以我无法点击 "OK",我也无法关闭键盘,因为首先我需要关闭 alert
!
(应用程序似乎正在恢复上次键盘的状态并再次出现)
如何在调用 alert
之前关闭键盘?(这样状态将是 "closed")
我试过:
myTextField!.resignFirstResponder()
虽然调用了按钮,但没有用,alert
出现并自动打开键盘!
将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()
如果 myTextField!.resignFirstResponder()
无法正常工作,请在调用此命令之前显示警报时尝试此操作 -->self.view.endEditing(true)
上面的功能不太好用,试试
选择-1:使用响应链
UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
This will resign the first responder (and dismiss the keyboard) every time, without you needing to send resignFirstResponder to the proper view. No matter what, this will dismiss the keyboard. It’s by far the best way to do it: no worrying about who the first responder is
Choice -2 :UIView的endEditing
(assuming your text field is a subview of the view you call this on). Most of the time:
self.view.endEditing(true)
我认为 iOS8 您需要使用 UIAlertController 而不是 UIAlertView。在 iOS8 及更高版本中使用 UiAlertView 会导致键盘不必要地弹出。我已经看到了这一点,并且我提出了在 iOS8 及更高版本中使用 UIAlertController 的条件。在以下版本中,UIAlertView 应该可以正常工作
这是 iOS 8 上的 UIAlertView 错误。
我有同样的问题,但 UIAlertController 没有问题。 :3
UIAlertView 自 iOS8.
起已弃用
在 Swift 4 中:下面的代码对我有用
DispatchQueue.main.async() {
self.view.endEditing(true)
}
在 IOS 8 中显示警报(密码错误)时,键盘会自动打开并隐藏 alert
(由于屏幕大小,只需要 Iphone 4 秒),所以我无法点击 "OK",我也无法关闭键盘,因为首先我需要关闭 alert
!
(应用程序似乎正在恢复上次键盘的状态并再次出现)
如何在调用 alert
之前关闭键盘?(这样状态将是 "closed")
我试过:
myTextField!.resignFirstResponder()
虽然调用了按钮,但没有用,alert
出现并自动打开键盘!
将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()
如果 myTextField!.resignFirstResponder()
无法正常工作,请在调用此命令之前显示警报时尝试此操作 -->self.view.endEditing(true)
上面的功能不太好用,试试
选择-1:使用响应链
UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
This will resign the first responder (and dismiss the keyboard) every time, without you needing to send resignFirstResponder to the proper view. No matter what, this will dismiss the keyboard. It’s by far the best way to do it: no worrying about who the first responder is
Choice -2 :UIView的endEditing
(assuming your text field is a subview of the view you call this on). Most of the time:
self.view.endEditing(true)
我认为 iOS8 您需要使用 UIAlertController 而不是 UIAlertView。在 iOS8 及更高版本中使用 UiAlertView 会导致键盘不必要地弹出。我已经看到了这一点,并且我提出了在 iOS8 及更高版本中使用 UIAlertController 的条件。在以下版本中,UIAlertView 应该可以正常工作
这是 iOS 8 上的 UIAlertView 错误。 我有同样的问题,但 UIAlertController 没有问题。 :3
UIAlertView 自 iOS8.
起已弃用在 Swift 4 中:下面的代码对我有用
DispatchQueue.main.async() {
self.view.endEditing(true)
}