Благодаря доброму участнику stackoverflow теперь у меня есть AirPrint, который отлично работает с iPhone, но вызов функции для 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, которое я много раз находил в ходе поиска в Google по этой теме. Он запускается и вызывается правильно, но все, что он делает, это «затемняет» экран iPad на симуляторе (как будто что-то открывается, но это просто огромный серый прозрачный прямоугольник, закрывающий весь экран). Если я нажму в любом месте затемненного экрана, он вернется в нормальное состояние, и программа продолжит работу, как будто я никогда не нажимал кнопку «Печать» (я использую свою собственную кнопку «Печать», которую я создал в раскадровке). В настоящее время я могу проверить это только на симуляторе, так что это может быть даже бета-ошибка, насколько мне известно... но я предполагаю, что делаю что-то не так.
Любые предложения приветствуются!
Спасибо.
Благодаря Аарону всплывающее окно выбора принтера для 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 просто дает мне ошибку «фатальная ошибка: неожиданно найдено nil при развертывании необязательного значения». Я готов позволить ему появиться на одной из других кнопок, если у меня нет другого выбора, но, вероятно, мне было бы полезно понять, что, черт возьми, происходит!
Еще раз спасибо!
self.view.frame
наself.view.bounds
- person Aaron Brager   schedule 27.07.2014self.view
занимает весь экран? Есть ли кнопка или элемент пользовательского интерфейса, который имеет смысл использовать? (как 2_)? - person Aaron Brager   schedule 27.07.2014myButton3
не подключена к вашей кнопке (попробуйте переподключить ее), либо она будет настроена наnil
позже. (Если вы ожидаете, что по какой-то причине это может бытьnil
, его следует объявить необязательным, как@IBOutlet var myButton3: BorderedButton?
, но это было бы ненормально). - person Aaron Brager   schedule 27.07.2014