私は、ビューの画像をスキャンしてから PDF などを生成できる OSX アプリに取り組んでいます。
しかし、IKScannerDeviceView を機能させることができず、ヘルプがほとんどまたはまったく見つからないように見えるため、最初のステップで既に行き詰まっています。
これは私が今まで持っているもので、ここで別の質問に従っています:
import Cocoa
import Quartz
class ViewController: NSViewController, IKScannerDeviceViewDelegate, ICScannerDeviceDelegate, ICDeviceBrowserDelegate {
@IBOutlet var scannerView: IKScannerDeviceView!
var deviceBrowser:ICDeviceBrowser!
override func viewDidLoad() {
super.viewDidLoad()
scannerView.delegate = self
deviceBrowser = ICDeviceBrowser()
deviceBrowser.delegate = self
deviceBrowser.browsedDeviceTypeMask = .Scanner
deviceBrowser.start()
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
func scannerDeviceDidBecomeAvailable(scanner: ICScannerDevice) {
scanner.requestOpenSession()
}
func deviceBrowser(browser: ICDeviceBrowser, didAddDevice device: ICDevice, moreComing: Bool) {
if device.type == ICDeviceType.Scanner{
scannerView.scannerDevice = device as! ICScannerDevice
}
}
func deviceBrowser(browser: ICDeviceBrowser, didRemoveDevice device: ICDevice, moreGoing: Bool) {
device.requestCloseSession()
}
func didRemoveDevice(device: ICDevice) {
device.requestCloseSession()
}
func device(device: ICDevice, didEncounterError error: NSError?) {
print("error")
print(error?.description)
}
}
ご覧のとおり、スキャン ボタンが灰色で、スキャンできません。設定でアクセスするとスキャンが機能します
編集: Apple の ScannerBrowser の例のように ICDeviceBrowserDelegate を実装しようとしましたが、Apple の例は機能しますが、メソッドは呼び出されません...
import Cocoa
import Quartz
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var deviceBrowser:ICDeviceBrowser!
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
deviceBrowser = ICDeviceBrowser()
deviceBrowser.delegate = self
deviceBrowser.browsedDeviceTypeMask = ICDeviceTypeMask(rawValue:
ICDeviceLocationTypeMask.Local.rawValue |
ICDeviceLocationTypeMask.Shared.rawValue |
ICDeviceLocationTypeMask.Bonjour.rawValue |
ICDeviceLocationTypeMask.Remote.rawValue |
ICDeviceLocationTypeMask.Bluetooth.rawValue)!
deviceBrowser.start()
print(deviceBrowser)
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
}
extension AppDelegate: ICDeviceBrowserDelegate{
func deviceBrowser(browser: ICDeviceBrowser, didAddDevice device: ICDevice, moreComing: Bool) {
print("didAddDevice")
print(device)
}
func deviceBrowser(browser: ICDeviceBrowser, didRemoveDevice device: ICDevice, moreGoing: Bool) {
print("didRemoveDevice")
print(device)
}
func deviceBrowser(browser: ICDeviceBrowser, deviceDidChangeName device: ICDevice) {
print("deviceDidChangeName")
print(device)
}
func deviceBrowser(browser: ICDeviceBrowser, deviceDidChangeSharingState device: ICDevice) {
print("deviceDidChangeSharingState")
print(device)
}
func deviceBrowser(browser: ICDeviceBrowser, requestsSelectDevice device: ICDevice) {
print("requestSelectDevice")
print(device)
}
}