我想使用swift中的自定义键盘扩展来设计自己的自定义输入视图键盘。现有的Xcode 6.1默认键盘集不适合我的应用程序需求。我想要的是一个增强的数字键盘,我会修改它,就像在iOS应用商店的Soulver应用中一样。http://www.acqualia.com/soulver/iphone/
最终,我不需要为其他应用程序提供自定义键盘扩展,但我不介意我的应用程序提供一个。在我看来,定制键盘是定制输入视图键盘的正确起点。
我终于消化了编辑器中的约束,并希望使用故事板或xib。
我确实需要能够以编程方式选择应用程序中的键盘扩展。键盘/自定义视图需要可用于包含键盘/自定义视图的应用程序,而无需在iOS设置中激活。
在给定需求的情况下,这是否可以作为扩展来完成,或者自定义键盘扩展是否可以轻松转换为自定义输入视图?你能说明一个或指出我在搜索时遗漏的示例Swift代码吗?谢谢。
发布于 2014-12-03 06:13:23
我现在正在用Swift编写一个键盘扩展,强烈建议不要做同样的事情。Swift和键盘扩展API都是全新的,没有很好的文档记录,创造了重要的学习曲线,两者都有重要的bug或奇怪的实现细节需要解决。
从您提出问题的方式来看,听起来您在iOS开发方面并不是很有经验,而且试图一次学习太多东西会导致灾难。如果我可以重新做我现在的项目,我会在目标C中做,只是为了极大地简化我正在学习的东西。
但好消息是,你不需要键盘就可以在其他应用程序中运行。这是一个好消息,因为在您自己的应用程序中编写自定义输入键盘类非常简单,并且是一个很好的起点。关于如何做到这一点,有很多现有的文档,包括这篇关于堆栈溢出的优秀文章。
How do I retrieve keystrokes from a custom keyboard on an iOS app?
更多详细信息:
cocoa中的标准自定义输入视图API非常强大,键盘扩展中的API几乎完全无效,因此使用自定义输入视图可以比使用键盘扩展做更多的事情。激活键盘扩展需要让用户在他们的iPhone设置中打开它,这是没有办法的,也没有办法在你的应用程序中选择他们选择的键盘(除了根本不允许自定义键盘扩展)。
如果您出于任何原因需要访问互联网或应用程序中的数据(跟踪使用信息、激活应用内购买、访问首选项),您还必须说服您的用户打开“完全访问”,这将向用户显示一个令人难以置信的可怕警报,就好像打开它意味着您可以监视他们并窃取他们的密码一样
回到为什么你不想在扩展中使用Swift。首先,Objective C不会导致Xcode的代码解析器每天多次崩溃,而在Swift中开发会导致Xcode本身崩溃。在Objective C中,调试器几乎总是正确的,在Swift的当前版本中,您经常看不到数组或字典内容,有时它显示的内容是不准确的,当单步执行代码时,通常会走无意义的路线。在Objective Code中开发意味着你不必因为Objective C本身的变化而更新你的代码,使用Swift几乎可以保证他们将在每个主要版本中进行重大的语法更改(9月份的最后一个版本确实如此)。
开发键盘扩展意味着有时你的扩展会因为神秘的原因而不能加载,你需要花费几个小时来调试原因。我的Swift键盘扩展有时仅使用println()语句进行调试,因为我无法加载调试器。由于苹果的工具在键盘扩展上还不能很好地工作,而且在Swift上也不能很好地工作,所以同时使用它们会让你的痛苦成倍增加。
最终的结果是,如果你不需要在你自己的应用程序之外使用这个键盘,那么使用键盘扩展API来构建它是愚蠢的。如果你确实需要使用键盘扩展API,那么在Swift中这样做是愚蠢的。这是由一个全职工作的傻子写的,试图发布一个基于Swift的键盘扩展。
如果您想使用标准的可可自定义输入视图API,那么使用Swift可能是不错的选择。你仍然需要处理额外的问题,因为它是一门年轻的语言,但你不会浪费那么多时间去解决神秘的,看似无法解决的问题,试图弄清楚这些问题是由Swift,键盘扩展API,Xcode和它的调试器中的失败,还是你自己的错误造成的。
https://stackoverflow.com/questions/26981579
复制相似问题