让我解释一下,我有一个带有 SearchBarView 的父视图,我正在传递这样的焦点状态绑定。
SearchBarView(searchText:$object.searchQuery, searching: $object.searching, focused: _searchIsFocused
Run Code Online (Sandbox Code Playgroud)
这完美地@FocusState var searchIsFocused: Bool按照父视图中定义的方式将其传递给 SearchBarView (子视图)。在父级中,我可以检查值的变化,一切正常。
问题依赖于当在父级中我有 SearchBarView.toolbar {}和ToolBarItem(). 什么也没有发生,焦点的值没有改变,等等。我的 SearchBarView 在顶部导航栏中,但仍然想在那里使用它..但我需要能够知道它何时处于焦点状态。如果我在任何 VStack 或其他东西中使用,一切都很完美..
-- 编辑 -- 提供更多代码来测试
搜索栏视图
struct SearchBarView: View {
@Environment(\.colorScheme) var colorScheme
@Binding var searchText: String
@Binding var searching: Bool
@FocusState var focused: Bool
var body: some View {
ZStack {
Rectangle()
.foregroundColor(colorScheme == .dark ? Color("darkSearchColor") : Color.white)
.overlay(
RoundedRectangle(cornerRadius: 13)
.stroke(.black.opacity(0.25), lineWidth: 1)
)
HStack {
Image(systemName: "magnifyingglass").foregroundColor( colorScheme == …Run Code Online (Sandbox Code Playgroud)