Tag: notificationcenter

键盘显示时如何引发U​​ITextField

初学者在构建自己的应用程序时,最常遇到的问题之一就是在键盘弹出时提高UIView或其众多子类之一。 有数十个Stack Overflow帖子,每个帖子都有数百条评论,所有这些都试图回答这个简单的问题。 即使对于经验丰富的老手来说,这样做也有点麻木,尤其是对于初学者,可能很难筛选所有可能的答案并自己选择最佳的解决方案。 此外,即使有人选择了某个解决方案,他们也常常无法确切了解引擎盖下发生了什么,或者该解决方案的好坏。 这会阻止人们快速学习,并可能导致他们养成不良习惯。 在这里,我将尝试给出解决方案,其背后的思考过程,并深入解释为什么我要这样做。 让我们开始吧。 在开发您在iOS中不确定的东西时,您的第一反应应该是参考Apple文档。 通常,您会发现大量有用的信息(只要您仔细阅读!)。 我在浏览“ 与键盘相关的通知”部分下的UITextField文档时发现了一些花哨的地方: “因为系统响应响应者的更改来管理键盘的显示和隐藏,所以它会发布以下通知来跟踪与键盘相关的更改” 这些通知是: UIKeyboardWillShow UIKeyboardDidShow UIKeyboardWillHide UIKeyboardDidHide UIKeyboardWillChangeFrame UIKeyboardDidChangeFrame 好的,太好了-因此,这些通知会告诉您键盘何时开始执行操作。 但是我们如何收到这些通知? 在iOS中,我们使用NSNotificationCenter(如果您使用的是Swift,则使用NotificationCenter)在整个应用程序中发送或接收通知。 如果您不太了解iOS中的通知,请稍后再回来查看我的通知博客文章。 在开始研究方面,我们几乎有所需的东西! 我们希望收听这些通知的发布,并在收到通知时可以调整我们的UI,以使一切看起来都很好。 让我们编码。 创建一个新项目(命名为任何名称) 打开情节提要文件,并使用自动布局将UITextField固定到视图控制器的底部。 添加前导约束,以便我们定义x值 添加尾随约束,以便我们定义宽度 添加底部约束,以便我们定义ay值 如果我们现在运行该应用程序并按文本字段,则键盘将显示并覆盖文本字段。 现在让我们修复它。 3.在ViewController.swift中,将以下代码添加到viewDidLoad函数中: NotificationCenter.default.addObserver(自身,选择器:#selector(ViewController.keyboardWillShow),名称:NSNotification.Name.UIKeyboardWillShow,对象:nil)NotificationCenter.default.addObserver(自身,选择器:#selector(ViewController.keyboardWillHide),名称: NSNotification.Name.UIKeyboardWillHide,对象:无) 在这里,我们正在默认的通知中心注册我们的视图控制器,以便可以在显示或隐藏键盘时进行更新。 您会注意到,对于选择器,我使用了文件中尚不存在的函数-现在让我们将它们写出来。 4.将以下函数头添加到ViewController.swift: @objc func keyboardWillShow(通知:NSNotification){} @objc func keyboardWillHide(通知:NSNotification){} 5.现在,我们需要获取键盘更新后的大小信息。 可通过传入的NSNotification参数userInfo对象获得此信息。 userInfo对象是可选的,因此我们需要先对其进行拆包以验证其存在: 守护让userInfo = notification.userInfo else {return} 6.为了获得键盘的大小,我们需要使用键UIKeyboardFrameEndUserInfoKey访问userInfo字典。 […]

单击时从通知中心删除通知

当点击通知中心并启动应用程序时,是否可以删除通知中心的推送通知? 大多数应用程序似乎将通知留在原地。 我读了另一个问题,这个: [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 可能工作,但它不适合我。 Facebook应用程序绝对似乎删除一旦点击推送通知。