Как расширение клавиатуры узнает, что оно работает в приложении для iPhone на iPad?

При использовании приложения iPhone на iPad расширение клавиатуры может знать только размер экрана iPad, но на самом деле я должен знать, что это похоже на работу на iPhone, и получить размер, как у iPhone.

Мой текущий код работает в приложении для iPhone на iPad и выглядит так:

введите здесь описание изображения


person Henry    schedule 26.09.2014    source источник


Ответы (3)


В viewDidAppear из UIInputViewController я действительно могу получить кадр self.inputView, в данном случае это 320.

Однако кадры self.view и self.inputView оба являются CGRecteZero в viewDidload или viewWillAppear, и именно поэтому мы должны устанавливать высоту клавиатуры только после [super viewDidAppear].

person Henry    schedule 26.09.2014
comment
Я определенно ничего не делал с созданием пользовательских расширений, но мне любопытно узнать, нельзя ли просто установить ширину рамки клавиатуры на self.view.frame.size.width и добавить UIViewAutoresizingFlexibleWidth autoresizingMask? С любым обычным подпредставлением, которое будет обрабатывать изменение его размера по ширине представления без необходимости фактической проверки значения. - person Mike; 26.09.2014
comment
@Mike Да, вы правы, но по некоторым причинам мы все еще рассчитываем размер вручную. - person Henry; 26.09.2014

Фактический размер представления клавиатуры (self.view.frame) можно проверить сразу после вызова [super viewDidLayoutSubviews] в viewDidLayoutSubviews UIInputViewController. Это первое место для проверки размера и намного быстрее, чем viewDidAppear.

person NeonBerry    schedule 10.05.2015

Расширение вашей клавиатуры должно быть универсальным, если это так, вы можете получить тип устройства (iPhone/iPad), используя приведенный ниже код.

let isPad = UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad 

Возможно, вы используете метод ниже, чтобы получить границы экрана

UIScreen.mainScreen().bounds.size

Этот метод дает всю высоту устройства, ширину в расширении клавиатуры.

Вы можете использовать вложенное условие, используя два вышеуказанных условия для решения вашей проблемы.

person Amit Bhavsar    schedule 11.05.2015