Нужна помощь по условному переходу на SwiftIOS

Программируем под IOS
Ответить
Anonymous
 Нужна помощь по условному переходу на Swift

Сообщение Anonymous »

Я создаю панель поиска .searchable() Swifts, потому что она не применяется к той области, которую я хочу.
В обычной строке поиска, когда вы фокусируетесь на панели поиска Текст «Отмена» отображается с плавным переходом в конечной части.
Я пытаюсь сделать это с условием if + переходом, но
каждый раз, когда панель поиска фокусируется в первый раз, вместо перехода он появляется мгновенно, прежде чем панель поиска станет меньше. но если я закрываю и открываю за короткий промежуток времени (например, за 3 секунды), он выполняет свою работу правильно. если я подожду дольше этого времени, проблема с мгновенным появлением возникнет снова.
Мне нужно решение
import SwiftUI

struct SearchBarView: View {
@State private var search = ""
@State private var isSelected = false
@FocusState private var isFocused: Bool
@Binding var selectedIndex: Int
var body: some View {
NavigationStack{
HStack {
HStack {
Image(systemName: "magnifyingglass")
.foregroundColor(.gray)
.padding(.leading, 8)

TextField("Search", text: $search)
.padding(.vertical, 8)
.focused($isFocused)
.submitLabel(.search)
.onSubmit {
isFocused = false
}
}
.background(Color(.systemGray6))
.cornerRadius(8)

if isSelected{
ZStack{
Button {

isFocused = false
search = ""
withAnimation {
isSelected = false
}
} label: {
Text("Cancel")
.foregroundStyle(Color.accentColor)
}
}
.transition(.move(edge: .trailing).combined(with: .opacity))
.buttonStyle(PlainButtonStyle())
}

}
.onChange(of: isFocused) { focused in

withAnimation(.easeInOut(duration: 1)) {
isSelected = focused
}
}
.onChange(of: selectedIndex) { newIndex in

isFocused = false
search = ""
withAnimation {
isSelected = false
}
}
}
}
}

#Preview {
SearchBarView(selectedIndex: .constant(0))
}


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

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

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

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

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

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