JustType 1.0.1

JustType 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 CC
发布上次发布2014年12月

未申报 维护。




JustType 1.0.1

  • Alexander Koglin

更好的 iOS 输入法

License Github

JustType 是一款使用滑动手势、突出显示和建议的键盘扩展。它是为在任何 iOS 文本编辑器和所有文本密集型 iOS 应用中使用而构建的。并且它非常易于使用。如果您想看一个视频演示,您可以在这个博客文章中找到它

使用建议编辑文本字段    使用手势编辑文本视图

功能

JustType 向键盘添加了 自己的手势,这不会干扰默认键盘。它允许通过在键盘上左右滑动来对文本中的单词进行 智能跳转。它还为 iOS 默认文本输入添加了 突出显示建议,这是通过使用 默认 iOS 语法检查器 实现的。

理由

最近,iOS 输入法的讨论相当多。我们非常喜欢 Fleksy 输入法 以及一些 其他原型,我们还非常喜欢 Swype 输入法,可以轻松安装在任何市场上的 Android 智能手机上。最近 SwiftKey 应用将智能预测带到了 iOS 设备,而 HipJot 也拥有一个相当吸引人的用户界面,但需要较高的学习曲线。

所有这些项目都非常优秀,但缺乏对 原生 iOS UI 的键盘扩展,这些扩展对每个应用开发者都 免费提供。我们希望有一些更内置的东西。因此,我们在 iOS 现有的 UIKit 之上构建了一个框架,它与传统的文本输入集成得更好。

iOS键盘和文本导航通常很繁琐。例如,为了跳转到文本中的前一个单词,您需要在文本输入的顶部进行很多操作。如果您在单词之间,无法直接将单词转换为大写或小写。虽然内置了语法检查器,但您只能通过在单词上按住来选择建议,而无法直接看到它建议的单词。我们可以做到更好!

这个项目试图不改变或篡改iOS文本的默认行为。这个项目的最高优先级是全面兼容iOS的UITextFields和UITextViews。默认键盘和文本处理方式不应以任何可想象的方式修改,但这个项目是在两者之上添加的。

我们希望这个扩展在所有应用程序中都是可用的,因此我们尽可能让它对用户最友好,兼容iOS 6系统,并以最大可能的方式进行扩展。这也是它完全单元测试的原因。

优点

  • 广泛的语言支持:实际上支持几乎所有的语言,因为没有任何键盘功能被替换。在iOS上工作的所有语言都可用于JustType。
  • 无强制:初学者不需要使用手势,如果他们不想的话。相反,他们可以像在他们的任何iOS应用程序中一样工作。
  • 性能:此实现使用了UITextView和UITextField的UITextInput协议提供的默认UIKit文本导航,这当然非常快。它还使用了iOS手势识别器来进行键盘上的手势操作。
  • 兼容性:此框架与iOS 6和7兼容。它建立在默认的UIKit之上。如果iOS后期的键盘处理方式发生变化,键盘手势扩展将停止工作。这就是为什么这对生产中的应用程序不应是任何关键因素。实际上,我们自己在App Store有一个名为'Just Type'的示例应用程序。
  • 可扩展性:键盘和UITextInput扩展很容易由开发者进行扩展(例如,可以轻松修改手势的行为)。我们实际上鼓励你为此项目做出贡献。

使用方法

实际上,要使用这个键盘扩展,只需遵循四个步骤。

  1. 通过将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
    
  2. 您应该通过在AppDelegate.m中添加来检查导入是否成功

        #import <JustType/JustType.h>
    
  3. 要为键盘附加手势,您只需要一个简单的命令(例如,在application:didFinishLaunching:中执行)

        [[JTKeyboardListener sharedInstance] observeKeyboardGestures:YES];
    
  4. 要使用文本输入元素,您可以使用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];

注意:您可以使用 JTTextViewJTTextField 单独进行单词高亮和完成,而不必使用键盘上的手势。您可以通过简单地不添加键盘监听器(从第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/>.