JustType 是一款使用滑动手势、突出显示和建议的键盘扩展。它是为在任何 iOS 文本编辑器和所有文本密集型 iOS 应用中使用而构建的。并且它非常易于使用。如果您想看一个视频演示,您可以在这个博客文章中找到它。
JustType 向键盘添加了 自己的手势,这不会干扰默认键盘。它允许通过在键盘上左右滑动来对文本中的单词进行 智能跳转。它还为 iOS 默认文本输入添加了 突出显示 和 建议,这是通过使用 默认 iOS 语法检查器 实现的。
最近,iOS 输入法的讨论相当多。我们非常喜欢 Fleksy 输入法 以及一些 其他原型,我们还非常喜欢 Swype 输入法,可以轻松安装在任何市场上的 Android 智能手机上。最近 SwiftKey 应用将智能预测带到了 iOS 设备,而 HipJot 也拥有一个相当吸引人的用户界面,但需要较高的学习曲线。
所有这些项目都非常优秀,但缺乏对 原生 iOS UI 的键盘扩展,这些扩展对每个应用开发者都 免费提供。我们希望有一些更内置的东西。因此,我们在 iOS 现有的 UIKit 之上构建了一个框架,它与传统的文本输入集成得更好。
iOS键盘和文本导航通常很繁琐。例如,为了跳转到文本中的前一个单词,您需要在文本输入的顶部进行很多操作。如果您在单词之间,无法直接将单词转换为大写或小写。虽然内置了语法检查器,但您只能通过在单词上按住来选择建议,而无法直接看到它建议的单词。我们可以做到更好!
这个项目试图不改变或篡改iOS文本的默认行为。这个项目的最高优先级是全面兼容iOS的UITextFields和UITextViews。默认键盘和文本处理方式不应以任何可想象的方式修改,但这个项目是在两者之上添加的。
我们希望这个扩展在所有应用程序中都是可用的,因此我们尽可能让它对用户最友好,兼容iOS 6系统,并以最大可能的方式进行扩展。这也是它完全单元测试的原因。
实际上,要使用这个键盘扩展,只需遵循四个步骤。
通过将JustType项目源代码作为项目依赖项链接,或将头文件和libJustType.a拖到您的项目中,或者通过CocoaPods(以下说明)安装,将框架添加到您的项目中。
$ cd <Your Project> # go to your project $ vim Podfile # create Podfile (and save) > platform :ios > pod 'JustType' $ pod install # install libraries from Podfile
您应该通过在AppDelegate.m中添加来检查导入是否成功
#import <JustType/JustType.h>
要为键盘附加手势,您只需要一个简单的命令(例如,在application:didFinishLaunching:中执行)
[[JTKeyboardListener sharedInstance] observeKeyboardGestures:YES];
要使用文本输入元素,您可以使用JTTextView(就像一个正常的UITextView),或者使用JTTextField(就像一个UITextField)直接使用
JTTextView *textView = [[JTTextView alloc] initWithFrame:self.view.frame]; [self.view addSubview:textView];
提示:在" Workspace / Target / Build Settings "下,请检查选项" all other linker flags "是否设置为" -all_load -ObjC ",否则编译器将无法找到库类,例如在nib文件中使用延迟加载时。如果您有一个不包含ARC的项目,还请设置链接器选项" -fobjc-arc "。
为了添加用于显示当前单词建议的附加视图(推荐),您需要将以下内容添加到您的textView或textField中。
CGRect attachmentViewFrame = CGRectMake(0, 0, self.view.size.width, <height>);
JTKeyboardAttachmentView *attachmentView = [[JTKeyboardAttachmentView alloc]
initWithFrame:attachmentViewFrame];
[textView setInputAccessoryView:attachmentView];
您可以通过创建一个用于高亮的自定义UIView,覆盖其 drawRect: 方法,并将此高亮视图添加到textView中(仅对textView有效)来为textView添加您自己的高亮样式。
UIView *myOwnHighlightView = [[MyOwnHighlightingView alloc] initWithFrame:CGRectZero];
textView.highlightView = myOwnHighlightView;
或者,您还可以简单地调整用于显示在所选词下方下划线下的默认高亮视图的颜色。默认情况下,它使用窗口的tintColor(仅对textView有效)。
UIView *highlightView = textView.highlightView;
[(JTDashedBorderedView *)highlightView setStrokeColor:[UIColor blackColor]];
要调整textFields的样式,有兩個textColor屬性,其中未高亮顏色默认为黑色,而高亮顏色默认为灰色(仅对textField有效)。
textField.backgroundColor = [UIColor blackColor];
textField.unhighlightedColor = [UIColor whiteColor];
textField.highlightedColor = [UIColor lightGrayColor];
如果您想要创建一个用于显示建议的自定义视图,可以设置一个对应于 JTTextSuggestionDelegate 协议的代理,并实现一些可选协议方法
textView.textSuggestionDelegate = self;
如果您想实现此建议代理协议,可以通过在textView/textField上调用以下方法来替换当前单词的建议
[textView selectSuggestionByIndex:suggestionIndex];
如果您想关闭单词高亮,只需在textView/textField上使用以下命令即可
textView.isSyntaxHighlightingUsed = NO;
如果您不希望支持语法自动完成,也可以关闭textView/textField的语法自动完成功能
textView.isSyntaxCompletionUsed = NO;
您还可以通过使用这些属性来调整键盘上用于手势的颜色。默认情况下,它们设置为窗口的tintColor及其补色
[[JTKeyboardListener sharedInstance] setTouchDownColor:[UIColor redColor]];
[[JTKeyboardListener sharedInstance] setTouchMoveColor:[UIColor redColor]];
如果您不想在滑动键盘上方出现的手势提供视觉辅助,也可以将其关闭
[[JTKeyboardListener sharedInstance] setEnableVisualHelp:NO];
注意:您可以使用 JTTextView 和 JTTextField 单独进行单词高亮和完成,而不必使用键盘上的手势。您可以通过简单地不添加键盘监听器(从第3步)或在使用后再次将其关闭来完成此操作。
[[JTKeyboardListener sharedInstance] observeKeyboardGestures:NO];
开发者团结起来:通过使用此项目,我们将支持我们有望并最终使苹果公司改进他们自己的默认键盘以支持更好的和更快的输入。但现在已经有了这个小扩展,支持手势、语法高亮和更好的语法完成。
我们希望您能加入我们使用此项目。如果您能对这个项目提出一些功能请求,或在GitHub上进行分支、开发和发送拉取请求,我们将不胜感激。感谢你的帮助,祝您玩得开心!
JustType受CC0许可,这意味着所有版权都已被放弃。所以尽情享受吧!
JustType by Alexander Koglin
To the extent possible under law, the person who associated CC0 with
JustType has waived all copyright and related or neighboring rights
to JustType.
You should have received a copy of the CC0 legalcode along with this
work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.