我希望在键盘上方实现一个自定义工具栏,用于包含一些自定义值的文本字段。我在网上发现了大量的教程,但这个问题是要问最好的方法是什么。
本教程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/
这对我来说似乎有点太容易了,我认为苹果推荐的方法是创建UIView子类并使用委托,以便带有文本字段的视图控制器充当该委托。
我在我的应用中专门针对iOS 7。
人们对此有何看法?如果支持第二个更容易的链接并且很可能通过Apple的指导,那么这是一个很好的起点,但如果代表是要走的路,我宁愿从一开始就研究它。
您的想法将不胜感激。
答案 0 :(得分:3)
没有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中没有条形按钮项(如果需要),只需添加子视图。这是一个"技巧"我在这里学到了,因为没有其他方法可以模糊!
答案 1 :(得分:1)
大卫的KOKeyboard (呃......,他使用的那个 - 见下面的大卫评论)看起来不错。我怀疑他正在使用官方Apple机制:
inputAccessoryView
通常,您可以在UITextView上设置该值,但它可以是允许自己成为第一个响应者的任何类。
提供的视图将放置在默认的Apple键盘上方。
是正确的,没有官方机制(并建议反对)修改任何系统提供的键盘。您可以添加它,如上所述。您也可以使用自己的机制完全替换它。如果设置
,Apply将放弃视图上的键盘设置并使用自定义输入机制inputView
将其设置为任何视图 - Apple仍将像自定义键盘一样管理其外观和解雇。
编辑:当然,iOS 8.x增加了对键盘的重要访问权限。 (此处未提及)