Как использовать IKScannerDeviceView в Какао

Как я могу использовать IKScannerDeviceView для сканирования документа внутри моего приложения?

Я попытался добавить IKScannerDeviceView в мое представление через IB и установить его делегат для моего делегата приложения (который реализует IKScannerDeviceViewDelegate), но когда я запускаю приложение, я получаю представление с помощью кнопок Show Details а также Scan, и только Show Details включен, и когда я нажимаю, ничего не происходит.

У меня подключен сканер, и я могу сканировать через Image Capture, но не через свое приложение.

У кого-нибудь есть хороший учебник о том, как его использовать?

1 ответ

Решение

Я наконец смог выяснить, как использовать IKScannerDeviceView.

Ваш класс должен реализовывать следующие делегаты:

IKScannerDeviceViewDelegate, ICScannerDeviceDelegate, ICDeviceBrowserDelegate

и вам нужно иметь IKScannerDeviceView в вашем окне с его делегатом, установленным для класса, реализующего IKScannerDeviceViewDelegate

Чтобы начать использовать его, вы должны создать ICDeviceBrowser вот так:

    ICDeviceBrowser *mDeviceBrowser = [[ICDeviceBrowser alloc] init];
    mDeviceBrowser.delegate = self;
    mDeviceBrowser.browsedDeviceTypeMask = ICDeviceLocationTypeMaskLocal|ICDeviceLocationTypeMaskRemote|ICDeviceTypeMaskScanner;
    [mDeviceBrowser start];

Затем реализуйте методы делегата способом, подобным этому:

- (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
{
    [scanner requestOpenSession];
}
- (void)deviceBrowser:(ICDeviceBrowser*)browser didAddDevice:(ICDevice*)addedDevice moreComing:(BOOL)moreComing
{
    if ( (addedDevice.type & ICDeviceTypeMaskScanner) == ICDeviceTypeScanner )
    {
        [scannerView setScannerDevice:(ICScannerDevice*)addedDevice];
    }
}
-(void)didRemoveDevice:(ICDevice*)removedDevice
{
    [removedDevice requestCloseSession];
}

Тогда, если все пойдет хорошо, ваш IKScannerDeviceView сможет взаимодействовать с вашим сканером!

Другие вопросы по тегам