2012-04-15 76 views
6

Trong ứng dụng iOS của tôi, tôi có mã sau đang được sử dụng để AirPrinting một NSString đơn giản.Kết nối AirPrint bị từ chối Lỗi

#pragma mark - Print 
-(IBAction)print:(id)sender { 

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.delegate = self; 

    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = @"Message"; 
    pic.printInfo = printInfo; 

    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]initWithText:self.Message.text]; 
    textFormatter.startPage = 0; 
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins 
    textFormatter.maximumContentWidth = 6 * 72.0; 
    pic.printFormatter = textFormatter; 
    pic.showsPageRange = YES; 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = 
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
     if (!completed && error) { 
      NSLog(@"Printing could not complete because of error: %@", error); 
     } 
    }; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; 
    } else { 
     [pic presentAnimated:YES completionHandler:completionHandler]; 
    } 
} 

Khi tôi chạy dự án của tôi (để kiểm tra nó), đây là lỗi tôi nhận được trong Output Debugger Window khi tôi chạm vào "In" trên UIPrintInteractionController:

Simulated\032InkJet\[email protected]\032USER\032NAME\032iMac._ipp._tcp.local.: startJob: Unable to connect to printd: Connection refused 

tôi nhận được lỗi này trong Trình mô phỏng iOS 5.1 bằng Trình mô phỏng in. Tại sao tôi nhận được lỗi này? Tôi có cảm giác nó liên quan đến cách tôi đang sử dụng Trình mô phỏng in.

Bất kỳ trợ giúp nào được đánh giá cao, và cũng giống như một lưu ý phụ, có ai biết cách hiển thị bộ điều khiển UIPrintInteraction từ một UIButton bình thường trên iPad thay vì một BarButtonItem không?

EDIT: Cần lưu ý rằng AirPrint được tự động thiết lập khi sử dụng Share Sheets trong iOS 6.0+.

Trả lời

11

tôi đã cùng một vấn đề chính xác và cơ bản trả lời thái mỏng thịt của cố định vấn đề này. Tuy nhiên tôi đã phải nhảy qua một vài hoops đầu tiên. Cuối cùng nó là một số loại vấn đề quyền truy cập tập tin.

tôi như sau (lưu ý, quyền truy cập admin là bắt buộc):

  1. Mở Terminal và điều hướng đến thư mục/private/var/tmp/

  2. gõ 'whoami' để xem chính xác của bạn tên người dùng.

  3. Giả sử tên người dùng của bạn là 'dogtest'. gõ 'sudo chown dogtest: admin printd'. Bạn sẽ nhận được một cảnh báo về cơ bản yêu cầu bạn phải chắc chắn rằng bạn biết những gì bạn đang làm.

  4. Nhập mật khẩu quản trị của bạn và nhấn enter.

  5. Bây giờ bạn có quyền sở hữu tệp printd và có thể làm những gì bạn muốn với nó. Đổi tên tệp thành một thứ khác bằng cách nhập 'mv printd printd-ren'.

  6. Mở trình mô phỏng iOS và Trình mô phỏng máy in.

  7. Mở trình khám phá Safari trong iOS và truy cập bất kỳ trang web nào.

  8. Nhấn vào nút Chia sẻ ở cuối trung tâm và chọn In.

  9. Làm theo lời nhắc để hoàn tất việc in. Bạn sẽ thấy nhiều hoạt động hơn trong cửa sổ nhật ký Trình mô phỏng máy in. Tại thời điểm này, tệp printd được tạo lại với quyền tài khoản của bạn (điều đó tốt).

  10. Thoát cả Trình mô phỏng iOS và Trình mô phỏng máy in.

  11. Chạy lại ứng dụng iOS của bạn trong trình mô phỏng và sau đó mở lại Trình mô phỏng máy in.

  12. Bây giờ bạn sẽ có thể mô phỏng Air Print từ ứng dụng của mình và bản in sẽ mở trong Xem trước dưới dạng PDF.

Tôi hy vọng điều này sẽ giải quyết được vấn đề cho bạn hoặc ít nhất bạn đã đi đúng hướng. Chúc may mắn.

+0

Hoạt động. Vui lòng sử dụng lệnh 'CD/private/var/tmp /' – Hassy

3

Hãy thử loại bỏ

/private/var/tmp/printd

+0

Xóa thao tác đó cho tôi, mặc dù vẫn yêu cầu sudo. Trong trường hợp của tôi, đó là thuộc sở hữu của một người dùng khác, do đó, giết nó đi và khởi động lại tất cả các sims/xcode sau đó cố gắng một lần nữa nhận nó làm việc. – Jason

2

Tôi đã dừng trình mô phỏng máy in cho tôi và không cho tôi bất kỳ lỗi nào. Tôi đã thử mô phỏng khác nhau, đặt lại chúng, khởi động lại máy tính, giết chết printd như đã đề cập ở trên, và những thứ khác nữa. Cuối cùng, những gì cố định nó cho tôi đã thay đổi kết nối mạng của tôi: tại thời điểm đó, tôi đã có wifi cộng với cáp ethernet (thông qua thunderbolt) gắn với macbook của tôi - cả wifi + ethernet kết nối với cùng một mạng. Tôi bật ra cáp ethernet và ngay lập tức nó bắt đầu hoạt động trở lại.

Cảm ơn Apple, tôi có thể nhận được 20 phút trở lại của tôi :)

+0

Cảm ơn bạn! Điều này đã giúp tôi 2,5 năm sau đó. :) –

Các vấn đề liên quan