4

如何使用 IKScannerDeviceView 扫描我的应用程序内的文档?

我尝试通过 IB 将 IKScannerDeviceView 添加到我的视图中,并将其委托设置为我的应用程序委托(它实现了 IKScannerDeviceViewDelegate),但是当我运行应用程序时,我得到一个带有按钮的视图Show DetailsScan并且只有Show Details启用,当我单击它时什么也没有发生。

我插入了扫描仪,可以通过 Image Capture 进行扫描,但不能通过我的应用程序进行扫描。

有人有关于如何使用它的好教程吗?

4

1 回答 1

8

我终于能够弄清楚如何使用 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 将能够与您的扫描仪进行交互!

于 2012-09-21T00:41:53.927 回答