Я также столкнулся с этой ошибкой, и я подал отчет в Apple и запросил техническую помощь. Я дам вам знать, как это происходит. А пока я кратко расскажу вам об этой ошибке.
На iPhone, чтобы сохранить драгоценную недвижимость с вертикальным экраном в ландшафтном режиме, UISearchDisplayController устанавливает UISearchBar для объединения своей панели поиска и поля поиска в одном горизонтальном макете. Это работает довольно хорошо из-за увеличенного горизонтального размера экрана (480 точек в альбомной ориентации). К сожалению, он работает не очень хорошо на iPad, где в ландшафтном режиме изменение пользовательского интерфейса действительно не нужно, во-первых, потому что у вас есть много вертикальной недвижимости. В главном представлении UISplitViewController у вас также есть только 320 пикселей горизонтального пространства отображения, а не увеличенный 480 iPhone. Результат - iSore.
Предположительно, проблема в том, что UISearchDisplayController ведет себя плохо в своем willRotateToInterfaceOrientation: duration: метод. В частности, не стоит проверять, находится ли он на iPhone или нет, прежде чем он устанавливает свойство combinesLandscapeBars на свой UISearchBar. Частный API-ключ в вашем коде работает, потому что он исправляет этот упущение в UISearchDisplayController. Но, конечно, Apple обрушит ярость древних на вас за использование недокументированных API, так что вы не сможете. На самом деле мы находимся во власти Apple.
Если вы готовы отказаться от удовольствия и удобства UISearchDisplayController, вы можете использовать UISearchBar без UISearchDisplayController и самостоятельно управлять аспектами представления. Очевидно, что для этого требуется гораздо больше кода, и было бы бессмысленно, если бы инженеры Apple API выполнили свою работу, но это, по крайней мере, устранит ошибку отображения.
Если вы Apple, вы можете использовать собственные недокументированные API, поэтому в Mail.app такой проблемы нет.
UPDATE
Отчет об ошибке, который я подал в Apple, # 8344719.