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

2024-05-25

我们正在观察 iOS 8.3 上键盘将显示和隐藏通知的异常行为。

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

然而,在 8.3 上,在 Alertview 委托上点击确定/取消后,它会解除警报并分别调用 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");
}

当先前的警报视图委托触发级联警报时,此行为会导致我们的应用程序出现问题 - 在不需要的情况下调出键盘。

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


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

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

  1. when UIAlertView显示
  2. 当视图控制器被释放时

Note:键盘会在以下情况下自动显示UIAlertView被解雇。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS8.3 上显示警报视图时不必要地触发 iOS 键盘通知 的相关文章

随机推荐

  • 文件太大错误处理 Nodejs Express Multer

    我将 multer 与 ExpressJS 一起使用 我想将文件上传限制为 0 5 MB var limits fileSize 0 5 1024 1024 var upload multer dest public uploads lim
  • ClickOnce Hello World 不起作用

    我阅读了一些有关如何进行 ClickOnce 部署的文档 现在我正在尝试部署 hello world 应用程序 我有一个 WPF 默认应用程序 只是一个空窗口 这就是我所做的 打开项目属性 打开发布向导 选择本地服务器 我使用 Visual
  • 如何在异常处理程序中访问访问请求主体

    我们有一个 Spring Boot 应用程序 我们的控制器期望在我们的端点之一中有一个 XML 文档元素 PostMapping value api v1 do stuff consumes APPLICATION XML VALUE pr
  • Python服务器“通常只允许每个套接字地址使用一次”

    我正在尝试用 python 创建一个非常基本的服务器 它侦听端口 当客户端尝试连接时创建 TCP 连接 接收数据 发回某些内容 然后再次侦听 并无限期地重复该过程 这是我到目前为止所拥有的 from socket import server
  • 我可以使用 Rails API 执行 INSERT-SELECT 操作吗?

    我必须将一个表中的 BLOB 字段复制到另一个表中 并且我想使用 INSERT SELECT 查询来实现此目的 INSERT INTO target table key data comment SELECT my key data som
  • 使用 WebDriver 暂时绕过隐式等待

    当使用隐式等待时 正如这里所建议的 https stackoverflow com a 10950905 56285 我仍然有时想要断言即时元素不可见或不存在 换句话说 我know有些元素应该隐藏 并希望我的测试做出这样的断言fast 而不
  • 为什么 MS Excel 在 Worksheet_Change Sub 过程中崩溃并关闭?

    当我在 Excel 工作表上运行 VBA 代码时 我遇到了 Excel 崩溃的问题 我正在尝试在工作表更改中添加以下公式 Private Sub Worksheet Change ByVal Target As Range Workshee
  • android,如何重命名文件?

    在我的应用程序中 我需要录制视频 在开始录制之前 我为其指定名称和目录 录制完成后 用户可以重命名其文件 我写了以下代码 但似乎不起作用 当用户输入文件名并单击按钮时 我将执行以下操作 private void setFileName St
  • VideoView中的seekTo

    我在寻找视频时遇到问题 我的应用程序应该从上次停止的位置恢复视频 所以我这样做 videoView seekTo bookmark videoView start 然而 当它播放时 我听到视频开头的声音大约 1 2 秒 只有在该视频寻找到正
  • 多线程读取xml文件

    我进行了很多搜索 但找不到适合我的问题的解决方案 我编写了一个 xml 文件 其中包含电视节目的所有剧集信息 它大小 38 kb 包含大约 680 个变量的属性和字符串 起初 我只是在 XMLTextReader 的帮助下阅读它 它在我的四
  • 根据 AVPlayer 的请求添加自定义标头字段

    使用 AVPlayer 时是否可以将带有 http 请求的标头发送到音频文件 我需要能够在服务器接收到标头的内容时检查标头的内容 以便限制对所请求的文件的访问 您可以使用AVURLAssetHTTPHeaderFieldsKey of AV
  • 为什么我的代码在 Spark Pregel 中执行需要很长时间?

    我在 Spark 中使用 Pregel 编写了处理图形的代码 但对于小数据集来说 它的执行速度非常非常慢 我以前用pregel写过程序 但是这段代码运行速度确实很慢 我的集群由 2 个工作人员组成 每个都有核心 i5 CPU 和 6 GB
  • 如何在 javascript/jquery 中进行非阻塞睡眠?

    如何在 javascript jquery 中进行非阻塞睡眠 冒着从评论者那里窃取答案的风险 请使用设置超时 https developer mozilla org en US docs Web API WindowTimers setTi
  • 取消嵌套 ng-click 调用之间的事件传播的最佳方法是什么?

    这是一个例子 假设我想要像很多网站一样有一个图像叠加层 因此 当您单击缩略图时 整个窗口上会出现黑色覆盖层 并且图像的较大版本位于其中的中心 单击黑色覆盖层可将其关闭 单击图像将调用显示下一张图像的函数 html div class ove
  • 将 C++ 代码(本机客户端)移植到浏览器(Web 应用程序)

    我有一个使用 Qt creator SDK 编写的 C 模块 我想将此代码移植到任何网页上运行 而不会对最终用户损害源代码 用户应该能够在任何浏览器 Chrome Firefox Safari Explorer 上看到此模块的输出 而无需安
  • JCombobox 字符串项(可见)和整数键(固有)

    我有一个数据库模式 它将作为 JTable 列显示在 JCombobox 中以选择名称 但我希望将 ID 字段插入 作为外键 到另一个表中 通常 在下拉列表中选择一个项目 将所选项目带到组合框的显示区域 我想要做的是 当选择组合框中的任何项
  • 在优化器期间保持变量不变

    我有一个损失张量 L 的 TensorFlow 计算图 它取决于 2 个 tf Variables A 和 B 我想在保持 B 固定的同时在变量 A 上运行梯度上升 A L 与 A 的梯度 反之亦然 在 B 上运行梯度上升 B L 与 B
  • 如果异常保存在 std::exception_ptr 中,那么在 catch 语句之外使用异常是否安全?

    我有一个std exception ptr其中有一个例外 我要调用std rethrow exception要获取实际的异常 catch 语句之后的异常是否有效 我的猜测是 因为我仍然持有std exception ptr它仍然有效 参见示
  • 逻辑 && 和 || JavaScript 中的运算符

    我想进一步澄清一些事情 考虑一下 var a 42 var b abc var c null a b 42 a b abc c b abc c b null 我知道对于 运算符 如果第一个操作数的测试为真 则 表达式的结果是第一个操作数 a
  • 在 iOS8.3 上显示警报视图时不必要地触发 iOS 键盘通知

    我们正在观察 iOS 8 3 上键盘将显示和隐藏通知的异常行为 视图控制器 监听键盘通知 有一个文本字段 单击并点击提交按钮后 该方法首先从文本字段中退出第一响应者 并显示一条警报以通知警告 一切正常 它会关闭键盘并按预期显示警报 也调用