2015-07-17 2 views
0

Я хочу использовать контроллер просмотра сафари. Мой проект Xcode нацелен на iOS 9. Удивительно, но при компиляции моего кода я получаю следующую ошибку компиляции, которая предлагает сделать совместимый с iOS 8.1 контроллер сафари, хотя он был введен в iOS 9!swift SFSafariViewControllerDelegate с iOS 9 целевой попросить iOS 8.1 совместимость

Protocol 'SFSafariViewControllerDelegate' requires 'safariViewControllerDidFinish' to be available on iOS 8.1.0 and newer 

Есть идеи по этому вопросу?

ответ

2

Вот ваши исправления (в Swift 2.0):

@available(iOS 9.0, *) 
extension YourlViewController: SFSafariViewControllerDelegate { 
    func safariViewControllerDidFinish(controller: SFSafariViewController){ 
    self.delegate?.onHtmlViewControlClosed(self) 
    } 
} 

и установить SFSafariViewController.delegate в YourViewController.

+1

Для того, что стоит, вы можете пометить реализацию метода протокола как '@available (iOS 9.0, *)' непосредственно в реализации класса. Вам не нужно указывать его в расширении. –

-1

В сообщении об ошибке сообщается, что вам необходимо реализовать метод safariViewControllerDidFinish в вашем SFSafariViewControllerDelegate. Вы правы, что SFSafariViewControllerDelegate был представлен в iOS 9. Это не требует совместимости с iOS 8.1.

+0

Вы должны прочитать сообщение об ошибке более тщательно @ Cin316. Я реализовал этот метод. В нем говорится, что он должен быть доступен для 8.1 и новее. –

Смежные вопросы