-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IOS-7945 Custom fee fileds #3879
Conversation
if #available(iOS 17.0, *) { | ||
view | ||
.onChange(of: viewModel.decimalValue, initial: true) { _, newDecimalValue in | ||
updateValues(decimalValue: newDecimalValue) | ||
} | ||
} else { | ||
view | ||
.onChange(of: viewModel.decimalValue) { newDecimalValue in | ||
updateValues(decimalValue: newDecimalValue) | ||
} | ||
.onAppear { | ||
updateValues(decimalValue: viewModel.decimalValue) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне кстати абсолютно тоже самое понадобилось в шторке:
if #available(iOS 17.0, *) {
content
.onChange(of: token, initial: true) { oldValue, newValue in
updateObserver(oldToken: oldValue, newToken: newValue)
}
} else {
content
.onChange(of: token) { [oldValue = token] newValue in
updateObserver(oldToken: oldValue, newToken: newValue)
}
.onAppear {
guard !isAppeared else {
return
}
/// Prevents warnings like "Modifying state during view update, this will cause undefined behavior."
DispatchQueue.main.async {
isAppeared = true
}
updateObserver(oldToken: token, newToken: token)
}
}
Только с одной доработкой - onAppear
может дергаться два раза в некоторых кейсах, сам лично встречал такое
Выглядит так, что надо завести тех задачу на бэкпорт .onChange(of:initial:)
на иос ниже 17 и написать один общий модификатор - благо весь код для него уже есть
Как думаешь?
Была проблема что мы проставляем
decimalValue
раньше чем TextFiled показывается на экране, и по этомуonChange
не вызывается и UI не меняется