gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:56:50 27 4
gpt4 key购买 nike

我们观察到与 iOS 8.3 上的键盘 willshow & will hide notification 相关的异常行为。

viewcontroler(监听键盘通知)有一个文本文件,点击提交按钮后,该方法首先从文本字段中退出第一响应者,并显示警告以通知警告。一切正常,它关闭键盘并按预期显示警报。 (也调用 UIKeyboardWillHideNotification 方法)。

但是,在 8.3 上,在 Alertview 委托(delegate)上点击确定/取消后,它会解除警报并分别调用 UIKeyboardWillShowNotification 和 UIKeyboardWillHideNotification,尽管它不应该被调用!这出乎意料,因为在显示警报之前键盘已经关闭!

这是我们正在尝试的代码片段:

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

}

- (IBAction)ShowAlert:(id)sender {

[self.TxtField resignFirstResponder];

//This woudln't make any diff either :(
[self.view endEditing:YES];

[self ShowAlertForTest];

}


-(void)ShowAlertForTest{

UIAlertView *theAlertView= [[UIAlertView alloc]initWithTitle:@"Title"

message:@"msg"

delegate:self

cancelButtonTitle:@"Cancel"

otherButtonTitles:@"Yes", nil];

[theAlertView show];

}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"buttonIndex = %ld",buttonIndex);
}

- (void)keyboardWillShow:(NSNotification *)aNotification
{
NSLog(@"keyboardWillShow");
}


- (void)keyboardWillHide:(NSNotification *)aNotification
{
NSLog(@"keyboardWillHide");
}

这种行为会导致我们的应用程序出现问题,因为之前的警报 View 委托(delegate)会触发级联警报 - 在不需要的情况下调出键盘。

非常感谢任何帮助/建议!

最佳答案

在我们的例子中,应用程序手动隐藏了键盘(例如,当用户点击登录时,我们隐藏键盘并调用服务器登录 API)。失败时,应用程序会向 UIAlertView 显示一条错误消息。当用户关闭警报时,iOS 帖子将/确实隐藏和将/确实显示通知。当然,在此序列中键盘不会显示和隐藏,因为它已被应用程序隐藏。

但是,我们注意到不是手动隐藏键盘,而是让 iOS 为我们隐藏键盘,解决了这个问题。所以,键盘在两种情况下自动隐藏:

  1. UIAlertView 显示时
  2. 当 View Controller 被释放时

注意:UIAlertView 关闭时,键盘会自动显示。

关于在 iOS8.3 上显示警报 View 时,iOS 键盘通知不必要地触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30340531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com