我的应用程序通常在其登录窗口中使用UIAlertView:
self.customAlert = [[IFCustomAlertView alloc] initWithTitle:@"Save Password"
message:@"¿Do you want the app to remember your password?"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:@"Cancel", nil];
问题是......自从这个alertView出现后我将我的设备更新到iOS8它显示了键盘,我无法忽略它。在iOS7上,这不会发生。
点击发送按钮时,我正在辞退用户和密码的响应者:
-(IBAction)btnSendTapped:(id)sender{
[self.tfpass resignFirstResponder];
[self.tfuser resignFirstResponder];
}
我试过了:
[self.view endEditing:YES];
并且在某些alertViews中它确实有效,但在其他情况下却没有。我的AlertViews从来没有文本字段,所以我认为这个键盘没有理由出现。
键盘上的开头按钮也不会隐藏它,所以键盘会阻碍OK和Cancel按钮,我不能在屏幕上做任何事情。
我认为这可能与UIAlertView弃用有关,但我不知道。
我也实施了这些方法:
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return true;
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
return YES;
}
任何帮助都将不胜感激。
答案 0 :(得分:1)
我从this博客
借用解决方案对我来说,键盘总是在调用alertView.show()时显示。
我的解决方案是使用didPresentALertView方法确保在警报视图弹出后调用此方法。然后我们可以遍历所有UIWindows及其子视图。我通过描述名称检测到它(如果需要,可以使用更准确的方法),只需将其从superview中删除即可。
func didPresentAlertView(alertView: UIAlertView) {
var tempWindow: UIWindow;
var keyboard: UIView;
for var c = 0; c < UIApplication.sharedApplication().windows.count; c++ {
tempWindow = UIApplication.sharedApplication().windows[c] as! UIWindow
for var i = 0; i < tempWindow.subviews.count; i++ {
keyboard = tempWindow.subviews[i] as! UIView
println(keyboard.description)
if keyboard.description.hasPrefix("<UIInputSetContainerView") {
keyboard.removeFromSuperview()
}
}
}
}
希望这是thelp。