Tag: 键盘

键盘:拥有手机的钥匙

既然Google和微软(在较小程度上)都已在上个月发布了iOS键盘,那么我们能否开始认真对待这些事情? 自iOS 8发行以来,Apple允许使用第三方键盘,它们一直是App Store的丑小鸭。 多亏了表情符号键盘,很大一部分iOS用户熟悉了额外键盘的概念-就像安装更多键盘软件一样。 但是,出于多种原因,键盘仍是App Store中的二等公民。 部分原因是它们很难安装和管理。 作为入门流程的一部分,几乎每个第3方键盘都有一个“如何安装该东西”。 当涉及到这个问题时,它应该让苹果公司减轻痛苦。 iOS在切换键盘方面有所改进,但安装过程仍然是一场噩梦。 此外,键盘并不真正像应用程序。 大多数第三方键盘都遵循类似的模型,因为应用程序本身只是键盘的容器。 安装之后,图标就是这个空的外壳,通常在人们的电话上闲置,直到他们厌倦并删除它。 最后,我们对“键盘”的真正定义过于迷恋,我认为这种观念阻碍了人们对这些应用程序的看法。 开发人员,品牌,初创企业和投资者应将键盘视为应用程序世界中的“店中店”。 键盘本质上是一个微型应用程序,可驻留在屏幕底部,并随您所处的应用程序而生。随着无数用例的消息传递的兴起,键盘(无论您如何选择定义(它)几乎是用户在手机上的体验的一部分,因此,在争取注意力和篡改传统搜索方面,保持领先和居中地位就显得尤为重要。 诸如Slash和Gboard之类的产品正试图在实用程序和转移之间取得平衡,这是最真实的键盘形式,它还提供了明显的价值并带来了一些乐趣。 Riffsy和Giphy Keys是有关iOS上的键盘不仅是键盘,又是一种真正无缝地分发内容的方式的典范示例。 作为一家媒体公司和品牌管家(以及本身就是品牌),迪斯尼已经采纳了这一策略。 该公司发布了自己的键盘,以确保其内容渗透到各处的对话中。 品牌的价值主张就是为什么像Snaps这样的公司引人注目。 为品牌的忠实拥护者提供一种下载键盘的方法,让他们随时获得最新内容。 通常,它已成为此内容本身的平台,进一步迈出了这一步。 除了开发出精美的产品外,我经常喜欢的原因之一是他们充分利用了自己的应用程序。 一旦安装了键盘,就有明确的理由定期返回该应用程序-您可以发现他们的合作伙伴正在推送的最新内容以及管理自己的个人资料,以查看如何使用键盘进行共享。 将配置文件(和用户社区)连接到键盘可能会潜在地允许“经常”将网络效果内置到很少包含它们的应用类别中。 Bitmoji在使用其应用程序时也采取了类似的策略。 在应用中出现新的服装和贴纸是一种很好的重新参与机制。 除了微软和谷歌对键盘空间的“验证”之外,没有什么比Snapchat最近收购Bitstrips(Bitmoji的制造商)更重要的了。 我认为,Snapchat是目前世界上最引人注目的消费互联网公司,但其应用故意是孤岛。 但是,它精明地意识到键盘可以充当各种特洛伊木马。 Bitmoji(以及Snapchat)可以出现在其他应用程序中。 现在,该公司的触角已经超出了筒仓式应用程序体验的范围。 认识到键盘在移动设备上的虚拟无处不在如何允许在应用程序和属性之间轻松分配内容是理解为什么这应该成为移动设备的下一个战场的关键,特别是对于那些希望在移动设备中立于不败之地的传统公司而言。

键盘观察器(快速)

为什么要观察员? 有时了解键盘何时弹出会很有用,这样我们就可以在视图中进行一些额外的更改或使用额外的代码来调用某些函数。 UITextFields足以获取状态。 但是观察者到键盘还是一个加点。 管理键盘 尽管许多UIKit对象会根据用户交互自动显示键盘,但是您的应用仍然承担一些配置和管理键盘的职责。 以下各节描述了这些责任。 接收键盘通知 显示或隐藏键盘时,iOS会将以下通知发送给任何已注册的观察者: UIKeyboardWillShowNotification UIKeyboardDidShowNotification UIKeyboardWillHideNotification UIKeyboardDidHideNotification 每个键盘通知都包含有关键盘在屏幕上的大小和位置的信息。 您可以使用UIKeyboardFrameBeginUserInfoKey和UIKeyboardFrameEndUserInfoKey键从每个通知的userInfo词典中访问此信息。 您应该始终在这些通知中使用该信息,而不是假设键盘是特定大小或特定位置。 键盘的大小不能保证从一种输入方法到另一种输入方法都相同,并且在不同版本的iOS之间也可能会变化。 此外,即使对于单一语言和系统版本,键盘尺寸也可能根据应用程序的方向而有所不同。 例如,图4–3显示了纵向和横向模式下URL键盘的相对大小。 使用键盘通知中的信息可确保您始终具有正确的尺寸和位置信息。 显示键盘 当用户点击一个视图时,系统会自动将该视图指定为第一响应者。 当包含可编辑文本的视图发生这种情况时,该视图将针对该文本启动编辑会话。 在该编辑会话开始时,视图要求系统显示键盘(如果尚未显示)。 如果键盘已经可见,则第一响应程序中的更改会将来自键盘的文本输入重定向到新轻击的视图。 因为当视图成为第一响应者时会自动显示键盘,所以您通常不需要执行任何操作即可显示它。 但是,您可以通过调用可编辑文本视图的becomeFirstResponder方法来以编程方式显示该键盘。 调用此方法会使目标视图成为第一响应者,并开始编辑过程,就像用户在视图上轻按一样。 如果您的应用程序在一个屏幕上管理多个基于文本的视图,则最好跟踪当前哪个视图是第一响应者,以便您以后可以关闭键盘。 解除键盘 尽管通常会自动显示键盘,但系统不会自动关闭键盘。 相反,您的应用有责任在适当的时间关闭键盘。 通常,您将根据用户操作来执行此操作。 例如,当用户点击键盘上的“返回”或“完成”按钮或点击应用程序界面中的其他按钮时,您可能会关闭键盘。 根据配置键盘的方式,可能需要向用户界面添加一些其他控件,以方便键盘的退出。 要关闭键盘,请调用当前作为第一响应者的基于文本的视图的resignFirstResponder方法。 当文本视图退出其第一响应者状态时,它将结束其当前的编辑会话,将该事实通知其委托人,并关闭键盘。 换句话说,如果您有一个名为myTextField的变量,该变量指向当前是第一个响应者的UITextField对象,那么解除键盘的操作就像执行以下操作一样简单: 让我们开始使用代码… 1:创建一个函数并将观察者添加到键盘。 //将观察者添加到键盘通知中 fileprivate func watchKeyboardNotifications(){ NotificationCenter.default.addObserver(自身,选择器:#selector(keyboardShow),名称:.UIKeyboardWillShow,对象:nil) NotificationCenter.default.addObserver(自己,选择器:#selector(keyboardHide),名称:.UIKeyboardWillHide,对象:nil) } 2:隐藏键盘并显示键盘功能。 //隐藏键盘 @objc func keyboardHide(){ //编写代码行以隐藏键盘,并在隐藏键盘之前对要执行的额外行进行编码。 } //显示键盘 […]

IOS11上的Gboard运行缓慢。 但是有一个解决方法!

自一段时间以来首次发布以来,我一直在IOS上使用Gboard 。 我喜欢并发现它比可用的固有键盘选项更好。 集成的滑动功能,语音转文本,谷歌搜索和GIF搜索是我最常用的功能。 但是,迟到了,Gboard真的很慢。 太慢了,我什至删除了几天。 我只是无法理解这种经历变得多么可怕。 我搜寻了互联网,但找不到能解决我问题的具体方法。 当IOS11发布时,整体体验变得越来越糟。 不仅现在键盘真的很慢,而且每次我想键入东西时,默认情况下都会显示字母“ Q ”。 最后,经过大量研究并详细浏览了该应用程序,我认为我找到了使Gboard尽可能平稳运行的最佳方法。 因此,在不浪费大量时间的情况下,执行以下步骤: 在您的IOS设备上打开Gboard应用。 您可以搜索它,或浏览到显示应用程序图标的屏幕。 转到语言,并确保仅安装最重要的语言。 转到键盘设置 ,然后关闭语音输入和字符预览 。 同时单击页面底部的“ 清除我的词典 ”以清除所有损坏的缓存。 转到搜索设置 ,然后关闭预测搜索和联系人搜索 。 如果您仍然发现任何性能问题,则可以选择单击清除Gboard搜索历史记录 。 重启手机一次,就可以了。 Gboard是一款出色的键盘,功能丰富。 但是,就像所有已连接的应用程序一样,这在与互联网交互以提高用户性能时也存在一些问题。 因此,请不要着急尝试这些步骤以提高性能。

键盘地狱

许多iOS开发人员遇到了很多麻烦:Keyboard HELL。 iOS和键盘并不是那么简单。 它并不总是容易实现和推理。 这就是为什么我以NSLayoutConstraint的形式创建了一个助手。 NSLayoutConstraint应该放在(滚动/表)视图和根目录的底部之间。 该距离通常为0.0像素,但是您可以设置偏移量。 键盘弹起时,约束将计算差异并自动偏移(滚动/表格)视图,因此键盘不会覆盖该视图。 约束是插图上的←— —→。 如您所见,边缘与按钮之间的距离与键盘与按钮之间的距离(如图所示)相同。 固定可以简单地完成: 您可以在此处下载NYSKeyboardHelper: 让我知道您是否使用过此功能,或者如果您认为这很有趣,请加星标。 我将在这里继续提供更新。 如果您喜欢这篇文章并需要我的帮助? 不要犹豫访问我的网站和/或通过Twitter与我联系

iOS开发课程:通知

什么是通知中心? 如何观察键盘的出现? 如何创建自己的通知? 让我们看看如何在iOS中使用通知。 对象在通知中心注册,以使用addObserver(_:selector:name:object:)或addObserver(forName:object:queue:using:)方法接收通知( NSNotification对象)。 当对象将自己添加为观察者时,它指定应接收的通知。 因此,对象可能会多次调用此方法,以便将自己注册为多个不同通知的观察者。 每个正在运行的应用程序都有一个default通知中心,您可以创建新的通知中心来组织特定上下文中的通信。 通知中心只能在单个程序中传递通知; 如果要向其他进程发布通知或从其他进程接收通知,请改用DistributedNotificationCenter 。 阅读有关Apple Developer的更多信息 让我们创建Single View操场并添加第一个观察者。 NotificationCenter addObserver 该代码有什么作用? 将自身(MyViewController)实例设置为观察者 将私有函数appDidBecomeActive定义为观察者配置的选择器 appDidBecomeActive每次您的应用程序变为活动状态时运行 在通知部分阅读更多 好吧,让我们成为键盘观察者。 将Playground代码更改为以下代码。 键盘观察 运行游乐场。 点按到textField 查看控制台输出: 键盘将显示 点按按钮 查看控制台输出: 键盘会隐藏 因此,现在我们有了两个对象的通知对象,其中都包含有关键盘矩形的信息。 我们还能做些什么? 尝试为UIApplication.keyboardDidShowNotification和UIApplication.keyboardDidHideNotification添加观察器功能,并在控制台中查看区别。 通知包含名称,对象和可选字典,并由NotificationCenter或DistributedNotificationCenter实例广播到该NotificationCenter 。 名称是标识通知的标签。 该对象是通知的发布者想要发送给该通知的观察者的任何对象(通常是发布通知的对象)。 词典存储其他相关对象(如果有)。 NSNotification对象是不可变的。 通常,您通常不直接创建自己的通知,而是调用NotificationCenter方法post(name:object:)和post(name:object:userInfo:) 。 重要 基金会框架的Swift覆盖层提供了Notification结构,该结构与NSNotification类桥接。 有关值类型的更多信息,请参阅结合使用Swift和Cocoa和Objective-C(Swift 4.1)中的Cocoa框架。 阅读有关Apple Developer的更多信息 让我们看看如何创建一个新的通知名称并在项目中使用它。 将Playground代码更改为以下代码。 跑操场 点按按钮 查看结果-UITextField现在是“第一响应者”。 […]

类别方法命名的最佳做法

每个人都有一个原因,那是我们所生活的世界中最糟糕的部分。 遗憾的是,我们在iOS 11上遇到了一个与键盘框架有关的怪异问题,仅在iOS11上才发生。 有时,当文本字段变得集中时,键盘会稍微向上移动一点,如下图所示。 在键盘相关通知的信息字典中,我们可以获得键盘的框架。 通过在通知UIKeyboardWillShowNotification的事件处理程序中检查此信息,我们可以发现键盘的高度不正确。 – (void)keyboardWillShow:(NSNotification *)notification { NSDictionary *info = [notification userInfo]; NSString *curveValue = [info objectForKey:UIKeyboardAnimationCurveUserInfoKey]; CGRect rect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; NSLog(@”keyboard frame: %@”, NSStringFromCGRect(rect)); } 在iPhone 7上运行时,我们得到如下日志: keyboard frame {{0, 451}, {375, 216}} keyboard frame {{0, 292}, {375, 375}} keyboard frame {{0, 451}, {375, 216}} keyboard frame {{0, 292}, […]