UIKeyboardWillHide 未触发

2023-12-06

我在这里读了很多关于这个主题的帖子,但我无法找到我的问题的答案,所以,希望你不会对另一篇 UIKeyboard 帖子感到无聊:-)

在我的视图控制器的实现中我添加了self作为两个通知的观察员UIKeyboardWillShowNotification and UIKeyboardWillHideNotification,传递选择器keyboardWillShow: and keyboardWillHide:处理通知。当我触摸一个UITextField, the keyboardWillShow:方法被调用,但是当我按下“完成”按钮(关闭键盘)时keyboardWillHide:方法未被调用。

说实话,我很想做我的UITextField显示键盘右下角带有“隐藏按钮”的键盘,但我无法找到正确的键盘类型。也许我需要将文本字段返回类型设置为“...完成”。这样我就看到“返回”键变成了“完成”。

所以我设置了一个工具栏作为我的UITextField's inputAccessoryView,所以现在我可以显示一个标准键盘,上面有一个工具栏和“完成”按钮。当用户触摸该按钮时,我用resignFirstResponder方法。

奇怪的是当我打电话时resignFirstResponder, the UIKeyboardWillHideNotification未发布;至少keyboardWillHide:方法未被调用。

你有什么建议给我?我真的很想显示一个带有小按钮的键盘,带有向下箭头来隐藏键盘,但这个解决方案也可能是正确的,但我想调整视图大小,为此我需要观察UIKeyboardWillHideNotification.

非常感谢您的帮助...

(添加:)

In viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:UIKeyboardWillShowNotification
                                           object:[[self view] window]];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillHide:)
                                             name:UIKeyboardWillHideNotification
                                           object:[[self view] window]];    

我从“你的”帖子中获取了这些声明:-)但是 willShow 有效......

中的“完成”按钮的操作UIToolbar被指定为inputAccessoryView我的文本字段是:

-(void)keyboardDone {
    [msgTextField resignFirstResponder];

关闭: 好的!当开发人员愚蠢时...那就太愚蠢了:-) :-)

这是我更正后的 willHide 方法:

-(void)keyboardWillHide:(NSNotification*)n {
    NSDictionary* userInfo;
    CGSize keyboardSize;
    CGRect viewFrame;

    /* This was the bad guy :) I forgot to delete it
     * after I previously copied the willShow method that
     * checks if keyboard is already shown (if so returns).
     *
     * if( keyboardIsShown )
     *   return;
     */
    userInfo = [n userInfo];
    keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    viewFrame = [[self scrollView] frame];
    viewFrame.size.height += ( keyboardSize.height - TABBAR_HEIGHT );

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.5];
    [[self scrollView] setFrame:viewFrame];
    [UIView commitAnimations];

    keyboardIsShown = NO;
    NSLog(@"HIDE\n");
}

首先,我要感谢大家为我提供的无用的帮助。我想给你一些要点,所以我会尝试为每个答案提出一个“兴趣点”,但我需要选择正确的一个......困难的部分......:-)

再次抱歉...我真的没有看到 if() 语句...


如果您阅读以下文档UIWindow它说这些通知的通知对象是nil。你正在路过self.view.window作为对象addObserver:selector:name:object:方法。尝试通过nil反而:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:UIKeyboardWillShowNotification
                                           object:nil;
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillHide:)
                                             name:UIKeyboardWillHideNotification
                                           object:nil];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIKeyboardWillHide 未触发 的相关文章

  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • 在 iPhone 中缝合图片

    我想并排缝合2张png 在Cocoa中 我会使用 NSImage initWithSize 然后只是drawInRect 但是 UIImage 没有 initWithSize 类 我现在该怎么做 Use UIGraphicsBeginIma
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • Swift 中的 import 语句是否有相关成本?

    阅读字符串宣言 我看到一个段落 https github com apple swift blob master docs StringManifesto md batteries included关于避免Foundation不需要的时候导
  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • 从 Android 通知中获取大文本

    我在用着NotificationListenerService监听通知 当我收到通知时 我使用以下代码提取标题和消息 Bundle n sbn getNotification extras String title n getString
  • 如何动态获取 UITableViewCell 的高度

    我创建了自定义的tableViewCell 我在UITableViewCell中添加了UIView SubView 所以我在 UIView 中的所有动态文本和图像内容都会根据文本和图像大小而变化 但现在 HeightforRowAtInde
  • 无法在 ios 应用程序中通过 googlecast 正确投射视频

    我正在开发一个基于 AVPlayer 的自定义视频播放器项目 尝试整合谷歌演员 我已经根据谷歌图进行了集成 https codelabs developers google com codelabs cast videos ios http
  • 错误消息:您输入的捆绑包 ID 已被使用

    我正在尝试发布一个 iPhone 应用程序 这不是第一个 我过去已经发表过其他的 因此 我在第一个和第二个表单中输入了所需的信息 然后填写了第三个大表单 您还可以在其中上传图标和屏幕截图 好吧 我在上传屏幕截图之前按下了 保存 按钮 因为我
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • 如何为 iPhone 6+、6 和 5 指定不同尺寸?

    我想让 iPhone 6 6 和 5 上的视图看起来几乎相同 在附图中 我的意思是 例如 取消 按钮在 iPhone 5 中距离屏幕左边缘应为 30 像素 在 6 中为 35 像素 在 6 中为 45 像素 其他元素也类似 如何为每种类型设
  • jQuery:离线后 POST 出错(iOS 和 Chrome)

    我构建了一个具有离线功能的 HTML5 Web 应用程序 使用 AppCache 程序流程为 Online 在网络上时 应用程序预加载一些基本信息 工作 Offline 用户拿着装有应用程序的平板电脑offline 然后在应用程序上执行他们
  • 为什么选择选择器选项后我的 SwiftUI 页面标题会发生变化?

    struct SettingsView View let settings Setting Setting name Aperture Increments options 1 3 1 2 1 Setting name Shutter Sp
  • 使用数组中的字符串淡入/淡出标签

    func setOverlayTitle self overlayLogo text Welcome var hello String Bon Jour GUTEN nMORGEN BONJOUR HOLA BUENOS D AS BUON
  • 如何删除 UITableView 中的缩进?

    首先 我对此很陌生 我很可能忘记了一些非常简单的事情 问题 我正在制作一个应用程序 在 a 中显示来自 imgur com 的随机图像tableView 由于某种原因 所有单元格都会缩进少量 如下图所示 我摆弄了许多设置storyboard
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 从超立方体图像中获取文本的确切位置

    使用 tesseract 中的 GetHOCRText 0 方法 我能够检索 html 中的文本 并在 webview 中呈现 html 时 我能够获取文本 但图像中文本的位置与输出不同 任何想法都非常有帮助 tesseract gt Se

随机推荐

  • 减少多个条形图中条形的宽度 R

    我需要减少下面多个条形图中条形的宽度 我尝试使用space选项按照这里更改条形图中条形的宽度 R 但似乎对于多个条形图 即在我的情况下每个变量有 4 个条形图 该函数space不起作用 以下是一些重现该情节的虚假数据 mat example
  • TThread.Synchronize 在 Delphi 2009 中导致(接近)死锁(在 Delphi 7 中工作)

    在 Delphi 2009 中 在 Delphi 7 中运行良好的同步函数执行速度极其缓慢 直到您在打开的窗体上移动鼠标为止 摆动鼠标会导致程序进入某种鼠标空闲状态 这不会CheckSynchronize CheckSynchronize
  • ASP.NET 的类似 Excel 的服务器端控件

    我们需要增加用于在 Web 应用程序上编辑的网格的功能 并且我们的经理一直引用 Excel 作为数据网格的完美示例 他仍然没有真正意识到电子表格之类的控件不会这样做 它不存在现成的 但我想我还是应该做一些搜索 我在 Google 上找到了一
  • C 和 printf 中的递归函数

    首先 我是 C 语言的初学者 我们正在大学的 结构化编程 课程中学习 C 语言 现在 最后几节关于 递归函数 的讲座对我这个初学者来说是一个痛苦 你们中的任何人都可以向我解释一下这一点吗 所以我有这个小脚本 一个递归函数 它接受一个十进制数
  • 如何获取 Outlook 邮件的发件人

    我有一些代码可以部分填充电子邮件作为回复 但我无法联系发件人 除非他们在 一个 我们的 上 交换服务器 Public Sub CreateMessage Dim EmailFrom As String Dim NewMessage As O
  • 在 Woocommerce 的下拉变体属性选项中显示价格和库存状态

    在 woocommerce 上 我的可变产品的每个变体都有特定的价格 如何在属性下拉选项中显示变化价格和库存状态 Note 这只适用于只有一个下拉选择字段 因此变量产品中设置的变体有一个属性 使用多个属性 因此多个下拉选择字段 它会显示一些
  • MongoDB 查询不存在字段和索引的记录

    我们有一个包含大约 1M 文档的 mongo 数据库 我们希望使用已处理字段轮询该数据库以查找我们以前从未见过的文档 为此 我们设置一个名为的新字段 processed 为了查询需要处理的文档 我们查询没有这个已处理字段的文档 db sto
  • Cloudera JDBC Driver for Impala 的WITH 子句问题 - 返回列名称而不是实际数据

    我正在使用 Cloudera JDBC Driver for Impala v 2 5 38 和 Spark 1 6 0 来创建 DataFrame 它适用于除WITH子句之外的所有查询 但WITH在我的组织中广泛使用 下面是我的代码片段
  • jQuery ajax 事件调用顺序

    假设我有一个像这样的简单函数 body ajaxSuccess function alert global post http www google com name John time 2pm function data s xhr al
  • xslt中输入参数

    如何将输入参数传递到 XSLT 样式表 我正在使用 xsltproc 并且我想使用 stringparam
  • PySide/PyQt 叠加小部件

    我正在尝试在 PySide 中实现这样的目标 https codepen io imprakash pen GgNMXO我想要做的是创建一个无框子窗口 下面有黑色覆盖层 我没有成功创建一个无框子窗口和覆盖层 这是复制 HTML 的基本代码
  • 如何将 Git Bash 添加到 VsCode

    在 VsCode 中选择终端时不显示 Git Bash 选项 确保您已经安装适用于 Windows 的 Git 在 VS Code 中 转到命令面板 P 终端 选择默认配置文件 or 终端 选择默认 Shell在旧版本中 然后在这种情况下选
  • 迭代时擦除集合元素///

    我不明白 为什么会出现运行时错误 迭代时删除集合元素 set
  • JS设置Cookie然后加载页面的方法

    我经常访问一个网站 其中有 点击更改为深色主题 按钮 黑暗主题更容易阅读 所以我每次访问都必须单击链接 关闭时清除历史记录 我在本地 Linux 机器上运行 Firefox 因此 Javascript HTML Python 和 Bash
  • 设置默认文件浏览位置VBA

    我有以下 VBA 代码 用于浏览 MS ACCESS 表单中的文件名 Private Sub Command64 Click Dim dialog As FileDialog Dim filePath As String Dim fileN
  • 使用 Jsoup 删除元素不起作用

    我想删除 html 文件头部的一些元素 CSS 标签 我尝试过这样的 Document doc Jsoup parse htmlString Element head doc head Elements headChildren head
  • 插入文本并将其添加到命名范围以供以后检索

    我正在尝试编写一个用于文档的 Google Apps 脚本 该脚本将插入一些文本 然后将插入的文本添加到命名范围 为了确保插入的文本保存到命名范围 我只想选择插入的文本 这是代码 function insertText var doc Do
  • 实体框架 IDENTITY_INSERT ON 不起作用

    我有这段代码 应该插入带有身份插入的记录 using MCT DB ArchiveEntities ent new MCT DB ArchiveEntities ent ExecuteStoreCommand SET IDENTITY IN
  • 为什么Java中的类是“class”? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 为什么 Java 的创建者对 Java 中的类使用 class 这个名称 这个词从何而来
  • UIKeyboardWillHide 未触发

    我在这里读了很多关于这个主题的帖子 但我无法找到我的问题的答案 所以 希望你不会对另一篇 UIKeyboard 帖子感到无聊 在我的视图控制器的实现中我添加了self作为两个通知的观察员UIKeyboardWillShowNotificat