感谢一位友好的stackoverflow会员,我现在可以通过iPhone完美地运行AirPrint(ing),但iPad的功能调用让我感觉很合适。这就是我所拥有的:
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
pic.presentFromRect(self.view.frame, inView:self.view, animated:true, completionHandler: nil)
} else {
pic.presentAnimated(true, completionHandler: nil)
}
调用iPad打印对话框的行是我对Objective-C代码的Swift转换,我通过Google搜索主题发现了很多次。它运行并被正确调用,但它所做的只是" dim"模拟器上的iPad屏幕(就像打开的东西一样,但它只是一个覆盖整个屏幕的巨大的灰色透明矩形)。如果我点击灰色屏幕上的任何地方它会恢复正常,程序会继续,好像我从未按过我的"打印"按钮(我正在使用我自己的" Print"我在故事板中创建的按钮)。我目前只能在模拟器上进行测试,所以我知道它甚至可能是一个测试版错误...但我猜测我做错了什么。
任何建议都表示赞赏!
感谢。
感谢Aaron,我的打印机选择iPad弹出窗口现在可以在我的程序中的每个按钮上工作,除了打印按钮! :)这是相关的代码:
@IBOutlet var myButton1: BorderedButton!
@IBOutlet var myButton2: BorderedButton!
@IBOutlet var myButton3: BorderedButton!
完全适用于除按钮3之外的所有按钮,当然这是我的"打印"按钮。这是按钮3的功能:
@IBAction func button3Tapped() {
var pic:UIPrintInteractionController = .sharedPrintController()
var viewpf:UIViewPrintFormatter = myTextView.viewPrintFormatter()
pic.delegate = self
pic.showsPageRange = true
pic.printFormatter = viewpf
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
pic.presentFromRect(self.myButton3.frame, inView:self.view, animated:true, completionHandler: nil)
} else {
pic.presentAnimated(true, completionHandler: nil)
}
}
更改" self.myButton3.frame"到myButton1或myButton2,我在iPad模拟器中获得打印机选择弹出窗口,没有任何问题。但是把它变成myButton3只是给了我错误"致命错误:在解开一个Optional值时出乎意料地发现了nil#34;。如果我别无选择,我愿意让它出现在其他按钮之一上,但对我来说理解发生的事情可能会有好处!
再次感谢!
答案 0 :(得分:0)
myButton3
的插座没有连接到您的按钮(尝试重新连接)或者之后设置为nil,在这种情况下应将其声明为可选:{{ 1}}。