Платформа расширения клавиатуры iOS 8

Я действительно трудное время, пытаясь выяснить, как создать пользовательские расширения клавиатуры для прошивки 8. Я могу сделать функциональность просто отлично и настройкой цвета на самом деле не является проблема, расположение, однако, является основной проблемой. Я пробовал множество сумасшедших способов выяснить, какой будет лучший макет, например, проверить ширину представления ввода или ширину представления приложения-контейнера (ни один из которых не разрешен явно), а затем определить, какое устройство оно так Я могу рассчитать соотношение размеров, высоты и расположения клавиш в зависимости от размера экрана и ориентации устройства.

Пока приложение использует только код и 0 файлов nib или доски для раскладки клавиатуры. Если кто-нибудь может мне помочь, это будет просто потрясающе!

Прямо сейчас есть функция для каждой клавиши, например, для ключа q

//Q Key

 func addQKey()
 {
 var qKey = ********.buttonWithType(.System) as ********
 qKey.setTitle(NSLocalizedString("Q", comment: "Q Key"), forState: .Normal)
 qKey.sizeToFit()
 qKey.frame = CGRect(x: 5, y: 14, width: (view.bounds.size.width / 6), height: 20)
 qKey.titleLabel?.font = UIFont(name: "Avenir-Black", size: 20)
 //qKey.backgroundColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0)
 //qKey.backgroundColor = UIColor(white: 1, alpha: 1)
 qKey.setTitleColor(UIColor.whiteColor(), forState: .Normal)

 qKey.addTarget(self, action: "didTapButton:", forControlEvents: .TouchUpInside)

 self.view.addSubview(qKey)
 }

Это подключается к методу, который затем вставляет текст

//TapButton Began

func didTapButton(sender : AnyObject)
{
 let button = sender as ********
 let title = button.titleForState(.Normal)
 var proxy = textDocumentProxy as UITextDocumentProxy

 proxy.insertText(title!)
}

Если у вас есть какие-то лучшие методы или вы знаете, как исправить эту проблему, пожалуйста, дайте мне знать! Исходный код также спасет мою жизнь!

1 ответ

Похоже, вы пытаетесь сделать макет вручную, если это так, я думаю, вы можете сначала определить некоторые константы, такие как

определить TOP_MARGIN 5

определить BOTTOM_MARGIN 5

определить LEFT_MARGIN 5

определить RIGHT_MARGIN 5

затем определите промежуток между кнопками и промежутком между строками (предположим, что они должны быть одинаковыми)

Затем вы можете рассчитать каждую рамку кнопок, используя их с шириной клавиатуры, в вашем UIInputViewController, self.view.frame должен предоставить вам рамку с клавиатуры.

Например, например, Q

Сначала вам нужно рассчитать ширину кнопки и потому, что мы обычно хотим, чтобы кнопки имели одинаковую ширину (или еще), поэтому ширина кнопки для Q была бы

int widthForQ = self.frame.size.width - LEFT_MARGIN - RIGHT_MARGIN - 9 * BUTTON_GAP

та же идея высоты

int heightForQ = self.frame.size.height - TOP_MARGIN - BOTTOM_MARGIN - 3 * ROW_GAP

Таким образом, ваш кадр для Q

CGRectMake (LEFT_MARGIN, TOP_MARGIN, widthForQ, heightForQ)

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

Надеюсь, поможет.

licensed under cc by-sa 3.0 with attribution.