我的問題,我問above.Here是解決方案的解決方案,
首先,你必須設置UIPrinterPickerController代表;即UIPrinterPickerControllerDelegate在您的班級。下一步是從UIPrinterPickerController中選擇打印機。所以你必須在你的方法中添加一些代碼。在我的設置視圖控制器中,我正在使用按鈕操作。
- (IBAction)btnSettingsTapped:(id)sender
{
//Search printer method.
[self searchForPrinters];
}
- (void) searchForPrinters
{
// For checking the ios version is greater than ios 7.Because skipping the Printing UI is ony in ios8 and later.
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
{
UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
[printPicker presentAnimated:YES completionHandler:
^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error)
{
if (userDidSelect)
{
//User selected the item in the UIPrinterPickerController and got the printer details.
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
//Here you will get the printer and printer details.ie,
// printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
[btnSettingsPrint setTitle:printerPicker.selectedPrinter.displayName forState:UIControlStateNormal];
NSURL *printerURL = printerPicker.selectedPrinter.URL;
}
}];
}
}
如果你想在任何其他視圖,設置打印功能,您必須從存儲的URL存儲在打印機URL信息,並獲取打印機對象,其他意見。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[printerURL absoluteString] forKey:@"yourKey"];
[defaults synchronize];
現在你可以告訴你的UIPrintInteractionController直接調用printToPrinter(打印:completionHandler :)與保存的打印機,而不是使用本methods.You的一個可以調用您的按鈕操作的方法。
//Printing item details passed to this method,
-(void)printYourItem :(NSData*)data
{
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[userDefault stringForKey:@"yourKey"]]];
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
if(currentPrinterObj)
{
[controller printToPrinter:currentPrinterObj completionHandler:^(UIPrintInteractionController *printController, BOOL completed, NSError *error)
{
if(completed)
{
}
else
{
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
}
}];
}
}
}
我想,這是幫助您的需要。
你在哪裏調用了這個方法 - (void)printYourItem:(NSData *)data –
其中你正在傳遞像圖像或文檔或文本這樣的打印細節,請你解釋一下。 –
你能解釋一下我兄弟嗎? –