iOS 8 の新しい適応型の「Present As Popover」機能を使用しています。プレゼンテーションを行うために、StoryBoard に単純なセグエを配線しました。ビューをポップオーバーとして表示するため、iPhone 6 Plus ではうまく機能し、iPhone 4s では全画面表示 (シート スタイル) として表示します。
問題は、全画面表示として表示される場合です。ビューに「完了」ボタンを追加して、dismissViewControllerAnimated を呼び出せるようにする必要があります。また、ポップオーバーとして表示されているときに「完了」ボタンを表示したくありません。
presentationController と popoverPresentationController の両方のプロパティを調べてみましたが、実際にポップオーバーとして表示されているかどうかを示すものは何も見つかりません。
NSLog( @"View loaded %lx", (long)self.presentationController.adaptivePresentationStyle ); // UIModalPresentationFullScreen
NSLog( @"View loaded %lx", (long)self.presentationController.presentationStyle ); // UIModalPresentationPopover
NSLog( @"View loaded %lx", (long)self.popoverPresentationController.adaptivePresentationStyle ); // UIModalPresentationFullScreen
NSLog( @"View loaded %lx", (long)self.popoverPresentationController.presentationStyle ); // UIModalPresentationPopover
AdaptivePresentationStyle は常に UIModalPresentationFullScreen を返し、presentationStyle は常に UIModalPresentationPopover を返します。
UITraitCollection を見ると、実際にポップオーバーとして表示されたときにのみ 1 に設定された "_UITraitNameInteractionModel" という特性が見つかりました。ただし、Apple は popoverPresentationController の traitCollection を介してその特性に直接アクセスすることはできません。