2016-01-02 3 views
11

Я разработал пользовательское расширение клавиатуры, и я могу правильно ввести текст. Однако я не могу понять, когда включить капитализированную клавиатуру и нижний регистр. Это происходит главным образом потому, что следующие функции неправильно возвращают уже введенный текст до/после. Иногда они возвращают нуль, иногда только последние несколько символов и т. Д. Много раз эти методы даже не называются вообще.Автоматическая заглавная строка расширения пользовательской клавиатуры iOS

- (void)textWillChange:(id<UITextInput>)textInput 

- (void)textDidChange:(id<UITextInput>)textInput 

я выяснил следующие сценарии, когда мне нужно включить свою заглавную клавиатуру, чтобы иметь:

  1. Длина текста = 0 или ноль
  2. Когда период вводится, мне нужно добавить пробел и верхняя клавиатура
  3. Когда курсор находится в месте, где символ перед курсором является периодом или пробелом, а до этого является периодом.
  4. Когда пользователь выбрал весь текст «Select All»
  5. Когда пользователь выбрал весь текст и удалил все
  6. Когда забоя пользователя и новый символ перед курсором либо период или пробел и перед тем, что это период ,
  7. Когда пользователь вставляет текст, а символ перед курсором - это период или пробел, а до этого - период.

Также, если это возможно, можно также получить последнее введенное «цельное» слово, которое я могу использовать для поиска в словаре, например, для интеллектуального ввода текста?

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

https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html

+0

Вы нашли решение для этого? – Sekhar

ответ

2

Е.Г. textField называется вашим экземпляром UITextField. Поместите это после инициализации.

textField.autocaptializationType = UITextAutocapitalizationTypeSentences

Это должно дать вам заглавные буквы во всех случаях, упомянутых вами.

Хорошо, чтобы ваша пользовательская клавиатура приняла протокол UITextInputTraits, выполните следующие действия.

@interface MyCustomKeyboard : UITextInput <UITextInputTraits> //Now adopts the UITextInputTraits protocol. 

- (instancetype)init { 
    self = super.init; 

    if(self) { 
     //Here you can set the properties that come with the protocol 
     self.autocapitilizationType = UIAutocapitalizationTypeSentences; 

     } 
} 
+0

Как получить экземпляр UIInputText? Я не вижу этого нигде :( –

+0

О, я думаю, вы на что-то! Позвольте мне попробовать больше узнать о 'UITextInput', который изменил метод изменения текста, и посмотреть, есть ли способ найти текст. к вам! –

+0

Самая большая проблема с Xcode в создании приложений для расширения клавиатуры - это то, что точки пролома и перерыва не работают с устройством. Будет ли возвращаться к вам после тестирования на симуляторе –

Смежные вопросы