我知道有一个API reference for the InputMethodKit framework。在Objective-C中也有sample code,但它并没有在Swift中提供一个例子。
有谁知道如何在Swift中制作简单的IME?它可以具有重复字母但只是不做任何事情的功能,所以我知道它确实有效。您使用哪些Xcode SDK构建并成功运行它?
答案 0 :(得分:2)
我已将Apple's NumberInput
sample code上传到github repo以便于阅读:
https://github.com/pkamb/NumberInput_IMKit_Sample
具体来说,我已将示例项目演示中的每个“步骤”作为自己的git commit上传。这样可以更轻松地区分项目工作流程。请继续查看它们如何为示例输入法项目添加功能。
答案 1 :(得分:-1)
我也尝试转换Apple's IMKit sample第一部分" NumberInput 0"项目从Objective-c到Swift
如果" NumberInput 0"在Swift项目中,然后跟随NumberInput 1,2,3可以快速转换。
" NumberInput 0"在Swift项目中可以编译,安装,添加到输入源,可以选择和运行,但IMKInputController子类NumberInputController的方法inputText(...)在我使用时不能通过键入键来到达Xcode调试NumberInput.app
NumberInput 0只包含4个文件,几行代码:
NumberInputController列在info.plist中。
我已成功重新创建" NumberInput 0"项目使用Objective-C和Xcode 7,所有工作,NumberInputController函数inputText(...)可以通过在调试时键入键来实现。
我是Swift的新手,任何人都可以帮助我获得" NumberInput 0"在斯威夫特工作?
以下是3个文件的内容:
<强> AppDelegate.swift 强>
import Cocoa
import InputMethodKit
let kConnectionName = "NumberInput_1_Connection"
var server:IMKServer = IMKServer.init()
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(aNotification: NSNotification) {
let identifier = NSBundle.mainBundle().bundleIdentifier;
server = IMKServer.init(name: kConnectionName, bundleIdentifier: identifier)
}
func applicationWillTerminate(aNotification: NSNotification) {
}
}
<强> NumberInputController.swift 强>
import Cocoa
import InputMethodKit
class NumberInputController: IMKInputController {
override func inputText(string:String, client: AnyObject) ->Bool {
// Debug break point put here
print(string);
return false;
}
}
<强>的Info.plist 强>
...
<dict>
....
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>LSBackgroundOnly</key>
<string>1</string>
<key>InputMethodConnectionName</key>
<string>NumberInput_1_Connection</string>
<key>InputMethodServerControllerClass</key>
<string>NumberInputController</string>
<key>tsInputMethodIconFileKey</key>
<string>nine.tiff</string>
<key>tsInputMethodCharacterRepertoireKey</key>
<array>
<string>Latn</string>
</array>
</dict>
</plist>
&#13;
感谢。