Какая версия команды Swift для AirPrint на *iPad*?

Благодаря доброму участнику 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 при развертывании необязательного значения». Я готов позволить ему появиться на одной из других кнопок, если у меня нет другого выбора, но, вероятно, мне было бы полезно понять, что, черт возьми, происходит!

Еще раз спасибо!


person Jim Barber    schedule 26.07.2014    source источник
comment
Изменить self.view.frame на self.view.bounds   -  person Aaron Brager    schedule 27.07.2014
comment
См. stackoverflow.com/questions/1210047/   -  person Aaron Brager    schedule 27.07.2014
comment
К сожалению, это изменение дало мне точно такие же результаты, но вы дали мне кое-что еще для исследования (начиная с того поста, на который вы ссылаетесь), и я очень ценю это! Спасибо!   -  person Jim Barber    schedule 27.07.2014
comment
self.view занимает весь экран? Есть ли кнопка или элемент пользовательского интерфейса, который имеет смысл использовать? (как 2_)?   -  person Aaron Brager    schedule 27.07.2014
comment
Ну это интересно! У меня три кнопки подряд вместе. Если я укажу любую из двух других кнопок, как вы упомянули выше, выбор принтера появится просто отлично! Но когда я использую фактическую кнопку «Печать», которую я создал, я получаю фатальную ошибку: неожиданно найдено nil при развертывании необязательного значения. Я собираюсь опубликовать дополнение к своему исходному сообщению с соответствующим кодом. Еще раз спасибо за вашу помощь в этом!   -  person Jim Barber    schedule 27.07.2014
comment
Либо ваша розетка для myButton3 не подключена к вашей кнопке (попробуйте переподключить ее), либо она будет настроена на nil позже. (Если вы ожидаете, что по какой-то причине это может быть nil, его следует объявить необязательным, как @IBOutlet var myButton3: BorderedButton?, но это было бы ненормально).   -  person Aaron Brager    schedule 27.07.2014
comment
Вы правы... в нем отсутствовало подключение Referencing Outlets! Теперь работает нормально. Еще раз спасибо!   -  person Jim Barber    schedule 27.07.2014


Ответы (1)


Либо ваш выход для myButton3 не подключен к вашей кнопке (попробуйте переподключить его), либо позже он будет установлен на ноль, и в этом случае его следует объявить необязательным: @IBOutlet var myButton3: BorderedButton?.

person Aaron Brager    schedule 28.07.2014
comment
Мой другой ответ, вероятно, смешался с комментариями... вы были правы, в нем отсутствовало соединение с источниками ссылок! Теперь работает нормально. Еще раз спасибо! - person Jim Barber; 29.07.2014