Фокусировка SwiftUI не работает на iPad с внешней клавиатуройIOS

Программируем под IOS
Ответить
Anonymous
 Фокусировка SwiftUI не работает на iPad с внешней клавиатурой

Сообщение Anonymous »

В моем приложении есть собственное представление ввода — .focusable(). Он ведет себя аналогично TextField, где для его использования необходимо сфокусироваться.
Это отлично работает на всех платформах, включая iPad, за исключением случаев, когда подключена внешняя клавиатура (волшебная клавиатура), и в этом случае она больше не может быть сфокусирована и становится непригодной для использования.
Есть ли решение этой проблемы или обходной путь? Мое представление очень сложное, поэтому простые решения, такие как замена его собственным представлением, невозможны, и я должен быть в состоянии прагматично заставить его сфокусироваться.
Вот очень простой пример, воспроизводящий мою проблему. Ни одна из функций не работает при подключенной клавиатуре:
struct FocusableTestView: View {
@FocusState private var isRectFocused: Bool

var body: some View {
VStack {
// This text field should focus the custom input when pressing return:
TextField("Enter text", text: .constant(""))
.textFieldStyle(.roundedBorder)
.onSubmit {
isRectFocused = true
}
.onKeyPress(.return) {
isRectFocused = true
return .handled
}

// This custom "input" should focus itself when tapped:
Rectangle()
.fill(isRectFocused ? Color.accentColor : Color.gray.opacity(0.3))
.frame(width: 100, height: 100)
.overlay(
Text(isRectFocused ? "Focused" : "Tap me")
)
.focusable(true, interactions: .edit)
.focused($isRectFocused)
.onTapGesture {
isRectFocused = true
print("Focused rectangle")
}

// The focus should be able to be controlled externally:
Button("Toggle Focus") {
isRectFocused.toggle()
}
.buttonStyle(.bordered)
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... l-keyboard
Ответить

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

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

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

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

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