Как получить геометрию экрана хост-приложения для пользовательской клавиатуры iOS 8 внутри приложения iPhone, работающего на iPad?

Моя пользовательская клавиатура имеет предустановки для каждого разрешения экрана всех устройств Apple. Итак, у меня есть пресеты для iphone, iphon5, iphone6, iphone6plus и ipad.

Но если пользователь запускает приложение для iPhone (например, Instagram) на iPad, мне нужно загрузить пресет клавиатуры iphone и использовать его геометрию.

Также iPhone 6 и 6+ могут использовать растянутый режим, когда приложения работают как растянутые приложения iPhone 5.

Таким образом, определение UI_USER_INTERFACE_IDIOM не является решением. Расширение клавиатуры и хост-приложение могут видеть геометрию экрана по-разному, поэтому я застрял здесь. Нужно получить хотя бы фрейм приложения для хост-приложения или любой другой явный способ получить эту геометрию.

Приложение и расширение клавиатуры видят геометрию по-разному: Приложение и расширение клавиатуры видят геометрию по-разному

Также клавиша Swift, похоже, имеет ту же ошибку при работе внутри приложения iphone на экране ipad.

Swiftkey внутри приложения iphone на ipad: Swiftkey внутри приложения iphone на ipad


person Modo Ltunzher    schedule 31.01.2015    source источник


Ответы (1)


Я только что нашел способ проверить isPad на расширении клавиатуры, но я не могу убедиться, что это лучший способ.

UI_USER_INTERFACE_IDIOM() && YourKeyboardViewController.instance.view.bounds.size.width == UIScreen.mainScreen.bounds.size.width

Вы должны сделать это после того, как YourKeyboardViewController.instance вызвал viewWillAppear(), после чего view.bounds изменился на 320x480 с 768x1024.

person Shawn Clovie    schedule 11.05.2017