【问题标题】:The Correct Way to do Custom Keyboards in iOS?在 iOS 中做自定义键盘的正确方法?
【发布时间】:2013-12-16 02:49:05
【问题描述】:

我希望实现一个自定义工具栏,它位于我的键盘上方,用于带有一些自定义值的文本字段。我在网上找到了大量的教程,但这个问题是为了询问最好的方法是什么。

本教程http://blog.carbonfive.com/2012/03/12/customizing-the-ios-keyboard/ 提供了我在许多教程中看到的最常见的方法,它创建了一个新的 UIView 子类并使用委托来获取该信息。

这就是共性。但是,我遇到了本教程,它在视图控制器本身中创建了工具栏,将其分配给 textField inputAccessory ,这很好。事实上,我尝试了代码并且不费吹灰之力,我现在有了一个自定义键盘。

http://easyplace.wordpress.com/2013/03/29/adding-custom-buttons-to-ios-keyboard/

这对我来说似乎有点太容易了,我认为 Apple 推荐的正确方法是创建 UIView 子类并使用委托,以便具有文本字段的视图控制器充当该委托。

我在我的应用程序中专门针对 iOS 7。

人们对此有何看法?如果支持第二个更简单的链接并且可能通过 Apple 的指导方针,这是一个很好的起点,但如果代表是要走的路,我宁愿从一开始就研究它。

您的想法将不胜感激。

【问题讨论】:

    标签: ios objective-c delegates keyboard uitextfield


    【解决方案1】:

    没有“Apple 批准”的方法可以做到这一点,很难相信您在这里所做的任何事情都会让您的应用被拒绝。您在帖子中引用的自定义键盘具有 iOS6 外观,在 iOS6 应用程序中会显得过时。我很快会提到一些 iOS7 的建议,但模仿系统今天的样子的持续危险保证以后看起来会过时。在 Mac/Cocoa 开发中,Apple 曾经在 WWDC 上说,如果你做了一些定制的东西,让它看起来很定制,不要使用标准的 Apple 小部件并尝试复制它。但这个建议大多被忽略了。

    对于 iOS 7,您可以create buttons that appear just like the system ones do(未按下),但当然,当有人按下它们时,它们不会像系统按钮一样(即动画向上和“气球”出来。

    我目前正在使用一个很棒的附加键盘,我的KOKeyboard 分支(使用上面的按钮)。这是一个很酷的补充。虽然这些按钮看起来像 iPad 按钮,但每个按钮都有 5 个按键。通过拖动到一个角落,您可以选择四个中的一个,然后在中间点击即可获得该键。这对您的应用程序来说可能有点矫枉过正,但它确实对我的应用程序有所帮​​助。它看起来像这样:

    (键/值位于下层视图中。)中心控件可让您移动光标 - 它就像操纵杆一样 - 可用于移动和选择文本。很棒的课程,我希望我发明了它!

    此外,对于任何解决方案,您都希望使用 UIToolbar 作为保存键的视图,因为它支持模糊它覆盖的视图,就像键盘一样。您可以使用其中没有栏按钮项目的 UIToolbar(如果需要),只需添加子视图。这是我在这里学到的“技巧”,因为没有其他方法可以模糊!

    【讨论】:

    • 感谢 David 的回复,实在是再好不过了。这是非常有用的信息,哇,那是你在那里上的一门地狱!我非常喜欢按钮、概念和类似操纵杆的方法。杰出的。虽然这非常有用,但考虑到 iOS 7,我肯定会使用 UIToolbar 来保存值,因为我确实喜欢整个 iOS 7 的模糊效果!再次感谢您的精彩回答!顺便问一下,你的应用是什么?我想知道为什么我还没有下载那个杰作:)
    • 我的“应用程序”是一个内部使用的应用程序,用于访问我们的 MongoDB 数据库。它刚刚得到了曙光。但这就是我使用所有开源的原因——所以其他人可以利用它。正如我所说的,KOKeyboard 最初不是我的——我希望我能拥有它,但遗憾的是不能。那就是说我保持最新!
    • 大家好,可以移动光标的操纵杆按钮,是否可以成为 AppStore 中拒绝自定义键盘应用的理由?
    • @Solidus 为什么会这样?不使用私有 API。它不是自定义键盘,而是附件视图。
    • @Solidus,我的第二个语言。也很糟糕。操纵杆不是键盘的一部分,它是附件视图的一部分。我不相信您可以将带有附件视图的自定义键盘作为扩展。但是,如果您使用普通键创建自己的键盘,并将 KOKeyboard 添加到其中,那么我不相信 Apple 会拒绝它。但这肯定是很多工作。此外,对于 KOKeyboard,您为 4 个大按钮中的每一个选择的键都是上下文相关的 - 即输入 JSON、正则表达式等的人。您可以将操纵杆与普通 kb 集成,这也是可以接受的。
    【解决方案2】:

    David 的 KOKeyboard (呃……,他使用的那个 - 见下面 David 的评论) 看起来不错。我怀疑他使用的是苹果官方机制:

    inputAccessoryView
    

    通常,您会在 UITextView 上设置该值,但它可以是任何允许自己成为第一响应者的类。

    提供的视图将放置在默认的苹果键盘上方。

    正确的是,没有官方机制(建议反对)来修改任何系统提供的键盘。您可以添加到它,如上。您也可以用自己的机制完全替换它。 Apply 将放弃视图上的键盘设置并使用自定义输入机制(如果您设置了)

    inputView
    

    将其设置为任何视图 - Apple 仍将像处理自定义键盘一样管理其外观和关闭。

    编辑:当然,iOS 8.x 增加了对键盘的重要访问。 (此处未提及)

    【讨论】:

    • 刚看到你的帖子!我希望我创造了它,但没有——我只是对其进行了一点现代化改造。当我将它演示给我的同事时,他们都哇哇哇哇哇哇哇哇哇哇哇!
    猜你喜欢
    • 2016-10-23
    • 2012-09-12
    • 2014-08-11
    • 1970-01-01
    • 2020-12-04
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多