今朝iOS 9.2にアップデート直後に見た目の変化で驚き、さらにXcode 7.2で開発中に挙動の変化に気付き、さらにびっくりしました( ´・‿・`)
どう変化したか
とりあえず概要です。
- 閉じるための
Done
ボタンが右上から左上に変更- これは普通にアプリ弄っていて気付きました
-
presentViewController
しただけでPush遷移するようになった- こちらはXcode 7.2で開発中に気付きました
閉じるためのDone
ボタンが右上から左上に変更
これはそんなに特筆することでは無いですが、個人的には嬉しかったです( ´・‿・`)
iOS 9.2で、SFSafariViewControllerのDoneボタンが右から左に移動したので、左手操作派ユーザーとしては嬉しい( ´・‿・`)
— M Ono (@_mono) December 9, 2015
presentViewController
しただけでPush遷移するようになった
こちらはびっくりしました( ´・‿・`)
左エッジスワイプで戻ることも可能です。
この挙動の方が良いという声が多く、Push / Pop modal SFSafariViewController (Hacking swipe from edge gesture)などがんばって対応している例などもありました。
それが、iOS 9.2・Xcode 7.2ビルドの組み合わせでこのように普通に呼び出すだけでPush遷移になりました。
let vc = SFSafariViewController(URL: NSURL(string: "http://qiita.com/mono0926")!)
presentViewController(vc, animated: true, completion: nil)
初めは、呼び出し元がUINavigationControllerだったらPushで、普通のUIViewControllerだったらモーダルかな?と思いましたが、いずれでもPushでした。
また、いくつか検証してみましたが、SDKバージョンは9.1を指定しても挙動変わらず、「iOS 9.2・Xcode 7.2ビルドの組み合わせ」が条件ぽくて、今いちしっくり来なかったです。
端末 | SDK | Xcode | 結果 |
---|---|---|---|
9.1 | 9.1 | 7.1 | モーダル |
9.1 | 9.2 | 7.2 | 未検証 |
9.2 | 9.1 | 7.1 | モーダル |
9.2 | 9.1 | 7.1 | モーダル |
9.2 | 9.1 | 7.2 | Push |
9.2 | 9.2 | 7.2 | Push |
開発者としてあまり困ることは無さそうな気がしますが、Push / Pop modal SFSafariViewController (Hacking swipe from edge gesture)のように細工しているとうまく動かなくなるなどありえるかもしれません。
iOS 9.1以前からPushの挙動になるよう対応されていたTweetbotは、iOS 9.2でも問題無かったですが。
ドキュメントには、まだ更新無さそうでした:
https://developer.apple.com/library/prerelease/ios/documentation/SafariServices/Reference/SFSafariViewController_Ref/RevisionHistory.html#//apple_ref/doc/uid/TP40016220-CH2-SW1
【追記】サードパーティーのAction extensionsもサポートされました
こちらの記事で知りました:
iOS 9.2ではSFSafariViewControllerでサードパーティエクステンションがサポートされ、Tweetbotに1Passwordを利用してアカウントを追加することも可能に。
確かに書いてありますね!
SFSafariViewController now supports 3rd party Action extensions. Any Action extension that works in Safari will also work in SFSafariViewController.