Как определить, нажимается ли текстовое поле хост-приложения или настраиваемой клавиатуры в расширении клавиатуры iOS?IOS

Программируем под IOS
Ответить
Anonymous
 Как определить, нажимается ли текстовое поле хост-приложения или настраиваемой клавиатуры в расширении клавиатуры iOS?

Сообщение Anonymous »

Я работаю над расширением клавиатуры для iOS, в котором у меня есть собственный UITextField, встроенный в саму клавиатуру. Мне нужно различать нажатия на текстовое поле моей пользовательской клавиатуры и текстовое поле хост-приложения.
В настоящее время у меня есть флаг isSearchTextfieldTapped, чтобы определить, нажал ли пользователь текстовое поле клавиатуры. В большинстве случаев это работает нормально. Однако если текстовое поле хост-приложения пусто и пользователь сначала нажимает на текстовое поле моей клавиатуры, флаг становится истинным, как и ожидалось.
Проблема возникает, когда пользователь впоследствии нажимает на текстовое поле приложения хостинга. На этом этапе мне нужно сбросить флаг isSearchTextfieldTapped на false, но я не могу понять, как определить, что текстовое поле хост-приложения было выбрано после нажатия на текстовое поле клавиатуры.< /p>
Как определить, когда пользователь переключает фокус обратно на текстовое поле хост-приложения, чтобы я мог сбросить свой флаг?
Вот упрощенная версия того, что Я пробовал:
var isKeyboardTextFieldActive = false
var isSearchTextfieldTapped = false

override func textDidChange(_ textInput: UITextInput?) {
print(#function)

// The app has just changed the document's contents, the document context has been updated.
if let beforeInput = proxy.documentContextBeforeInput {

if beforeInput == searchTextfield.text {
isKeyboardTextFieldActive = true
} else {
isKeyboardTextFieldActive = false
}

} else {
if isSearchTextfieldTapped {
isKeyboardTextFieldActive = true
} else {
isKeyboardTextFieldActive = false
}
}
}

extension KeyboardViewController: UITextFieldDelegate{
func textFieldDidBeginEditing(_ textField: UITextField) {
isSearchTextfieldTapped = true
}

func textFieldDidEndEditing(_ textField: UITextField) {
isSearchTextfieldTapped = false
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... -tapped-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»