Swiftui: нажатие клавиши вкладки с внешней клавиатуры не меняет фокусировку от кнопки Textfield на кнопку, когда предстаIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swiftui: нажатие клавиши вкладки с внешней клавиатуры не меняет фокусировку от кнопки Textfield на кнопку, когда предста

Сообщение Anonymous »

Код: Выделить всё

Device: iPhone XR
iOS: 18.3.2
Need to support: iOS 15.0+
< /code>
Я тестирую доступность с внешней клавиатурой Bluetooth. Я включил полный доступ к клавиатуре 
из настройки доступности iPhone. Мое пользовательское пользовательское интерфейс содержит 2 текстовых полей, 2 кнопки. При нажатии клавиши вкладки с клавиатуры я хочу, чтобы фокус был перемещен в каждой элементы пользовательского интерфейса. Ниже код работает нормально. Там я могу фокусировать текстовые поле и кнопки и изменить значение: < /p>

Код: Выделить всё

struct ContentView: View {
@State private var count = 0
@State var text1 = ""
@State var text2 = ""
@FocusState private var focusedButton: Int?

var body: some View {
VStack {
VStack(spacing: 24.0) {
Text("Btn Tap Count: \(count)")
TextField("text field 1", text: $text1)
.textFieldStyle(RoundedBorderTextFieldStyle())
.focused($focusedButton, equals: 1)
TextField("text field 2", text: $text2)
.textFieldStyle(RoundedBorderTextFieldStyle())
.focused($focusedButton, equals: 2)

Button(action: {
count += 1
}, label: {
Text("BTN TO Increase")
.padding(.vertical, 8.0)
.frame(maxWidth: .infinity)
})
.background(Color.green)
.cornerRadius(10)
Button(action: {
count -= 1
}, label: {
Text("BTN TO Decrease")
.padding(.vertical, 8.0)
.frame(maxWidth: .infinity)
})
.background(Color.orange)
.cornerRadius(10)
}
.padding(.top, 24)
.padding()
}
}
}
Видео здесь, вы можете видеть кнопку, и текстовые полки сфокусируются должным образом (для видео с высоким уровнем RES. ScrollView . Поэтому я заменяю большинство VSTACK на ScrollView . Но это делает фокус, сдвигающийся в ловушке между TextFields.

Код: Выделить всё

struct ContentView: View {
@State private var count = 0
@State var text1 = ""
@State var text2 = ""
@FocusState private var focusedButton: Int?

var body: some View {
ScrollView { // only change is here from previous example
VStack(spacing: 24.0) {
Text("Btn Tap Count: \(count)")
TextField("text field 1", text: $text1)
.textFieldStyle(RoundedBorderTextFieldStyle())
.focused($focusedButton, equals: 1)
TextField("text field 2", text: $text2)
.textFieldStyle(RoundedBorderTextFieldStyle())
.focused($focusedButton, equals: 2)

Button(action: {
count += 1
}, label: {
Text("BTN TO Increase")
.padding(.vertical, 8.0)
.frame(maxWidth: .infinity)
})
.background(Color.green)
.cornerRadius(10)
Button(action: {
count -= 1
}, label: {
Text("BTN TO Decrease")
.padding(.vertical, 8.0)
.frame(maxWidth: .infinity)
})
.background(Color.orange)
.cornerRadius(10)
}
.padding(.top, 24)
.padding()
}
}
}
Видео здесь, вы можете видеть кнопку, и текстовые поле не целенаправленно сосредоточены при нажатии клавиши вкладки (для видео с высоким разрешением. .focused ($ Focusedbutton, Equalls: 3) и .cocused ($ focusedbutton, equalls: 4) для 2 кнопок, но это не работает. Также попробовал с доступностьюfocusState , который также не удастся. Как продолжать использовать ScrollView и сохранить поведение смещения фокуса, например, предыдущая реализация?

Подробнее здесь: https://stackoverflow.com/questions/795 ... -from-text
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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