iOS 8 自定义键盘
Posted
技术标签:
【中文标题】iOS 8 自定义键盘【英文标题】:iOS 8 Custom Keyboard 【发布时间】:2014-08-11 23:11:59 【问题描述】:我正在尝试构建一个自定义键盘,它就像一个表情符号键盘,但键盘的数据来自一个 json 文件。解析完这个json文件并获取数据后,如何让自定义键盘使用它并显示在键盘视图中,就像内置的表情符号键盘一样?现在,我遵循应用扩展键盘:自定义键盘指南,这里只有少量信息。有没有关于如何在线创建自定义表情符号键盘的教程或指南?我正在尝试的当前代码如下:
class KeyboardViewController: UIInputViewController
override func viewDidLoad()
super.viewDidLoad()
var error: NSError?
let yanFile = NSBundle.mainBundle().pathForResource("yan", ofType: "json")
let yanData = NSData(contentsOfFile: yanFile) as NSData
let yanDict = NSJSONSerialization.JSONObjectWithData(yanData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary
println("dict: \(yanDict)") //print nothing in console
// Perform custom UI setup here
self.nextKeyboardButton = UIButton.buttonWithType(.System) as UIButton
self.nextKeyboardButton.setTitle(NSLocalizedString("Next Keyboard", comment: "Title for 'Next Keyboard' button"), forState: .Normal)
json如下:
"list":
[
"tag": "laugh",
"yan":
[
"o(*≧▽≦)ツ┏━┓",
"(/≥▽≤/)",
"ヾ(o◕∀◕)ノ"
]
,
"tag": "wanna",
"yan":
[
"✪ω✪",
"╰(*°▽°*)╯",
"≖‿≖✧",
">ㅂ<",
"ˋ▽ˊ",
"✪ε✪",
"✪υ✪",
"ヾ (o ° ω ° O ) ノ゙",
"(。◕ˇ∀ˇ◕)",
"(¯﹃¯)"
]
]
【问题讨论】:
您必须遵循扩展指南。就像您正在使用 UIVIewController 一样,因此请这样思考并设置您的 UI。首先从服务器获取您的数据,解析并创建您的用户界面,我建议删除 self.nextKeyboardButton 或隐藏使用您的按钮切换键盘。 @Ravee10 喜欢我删除 json 文件的那部分代码吗?但它似乎不起作用。 ..请记住扩展不像应用程序..它没有运行 nsrunloop 和 UIAplication 来监听网络响应,所以使用静态数据。 使用 plist 代替 :-) 这里有一个很好的教程:verisage.us/blog/2014/07/17/… 【参考方案1】:首先,您需要在 KeyboardViewController 中为键盘创建 UI。这取决于你如何自定义它,添加按钮、视图、手势等。(顺便说一下,视图的高度是有限的,标准键盘高度大小,所以不要试图让它更高它不会绘制)模板生成它只是一个示例,展示了如何在其中放置一个按钮。设置 UI 后,请确保您有 下一个键盘按钮,它是必需的。
关于Emoji,它不是真实的图像,它们只是后来被系统替换为图像的unicode字符。所以你不能传递图片,你唯一能提供的输入是 NSString [self.textDocumentProxy insertText:@"hello "]; // Inserts the string "hello " at the insertion point
更多细节可以在这里找到https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html。
【讨论】:
我的键盘被苹果拒绝了这个原因: ----- 25.6 ----- 我们发现你的键盘扩展不包括数字和小数类型,不符合应用程序商店审查指南。具体来说,缺少数字和十进制键盘限制了用户可以执行的任务范围,这可能会造成糟糕的用户体验。 ---------------- 你知道如何在我的自定义键盘中添加另一个视图来提供这个吗?或者另一种可以接受指南的方法?非常感谢!【参考方案2】:你可以通过点击新建文件->查看来构建一个xib文件
1) 在 xib 文件中创建一个 uiview 320x216,您可以将任何您想要的控件拖放到其中
2) 然后您可以像这样将笔尖加载到键盘的 inputView 中:
// Perform custom UI setup here
UIView *layout = [[[NSBundle mainBundle] loadNibNamed:@"keyboardXib" owner:self options:nil] objectAtIndex:0];
[self.inputView addSubview:layout];
3) 我认为如果你构建一个 JSON 到键盘 api 会很棒 您将键盘映射的 JSON 发送到您的应用程序 并且应用程序知道如何相应地安排 inputView 上的键
如果您构建了这个项目,请告诉我们!
编辑:
4) 您需要做的大部分工作是解析 JSON 并从 JSON uibuttons 中显示您想要的内容,并决定它们将哪些文本插入到文本字段中
看看这个问题:How to parse a JSON file in swift?
祝你好运!
【讨论】:
我明白了。但我要问的是为什么解析 json 部分不起作用? @yongho - 你能发布 JSON 吗? @yongho - 我回答你的问题了吗? :D以上是关于iOS 8 自定义键盘的主要内容,如果未能解决你的问题,请参考以下文章