问题标签 [uiviewrepresentable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 如何在 SwiftUI 中观察 WKWebView 的加载进度?
我正在使用 SwiftUI 构建一个 Web 浏览器,并将视图分为 3 个部分:SearchView、WebView (UIViewRepresentable)。
在 SearchView 中,我@Binding var query
更新了 TextField 的 onCommit 方法。WebView 有@Binding var query
和@Binding var loadingProgress
. 当查询和进度都更新时,正确知道 webView 更新。我如何过滤这些事件并且不重新加载 webView 以进行进度更改?
我想我需要在updateUIView(_ uiView: WKWebView, context: Context)
方法上工作,但我不知道如何实现这个逻辑。或者也许所有的概念都是错误的?
这是我的网络视图
在外面我有 @State 属性,它更新 ProgressView
ios - 如何在 SwiftUI 中使用 PKToolPicker 和 PKCanvasView
目前,我可以有一个单独的PKCanvasView
和一个PKToolPicker
在点击按钮时显示的。但是,该工具不会在选取器和画布视图之间传输。有谁知道如何将两者链接起来,这样当我在选择器中更改工具时,该工具也会在画布视图中更新?我在下面附上了我的代码。谢谢!
swiftui - SwiftUI 中 TextField 上的 FirstResponder & :onCommit
在SwiftUI
应用程序中,我需要将焦点设置在 a 上TextField
并自动带上键盘,在标准 Swift 中,这将通过以下方式完成:
但这似乎并不存在于SwiftUI
.
我在这里找到了一份工作。
但是,我的领域使用 :onCommit; 这不在示例代码中。
使用时设置 :onCommit 功能的方法是什么UIViewRepresentable
?
view - SwiftUI + UIView 触摸事件碰撞
我有一个包含 UIViewRepresentable 的视图(一些 UIView)。该 UIView 有一个按钮作为子视图,它有自己的操作。我有两个问题:
如果 SwiftUI 视图没有附加点击手势,则 UIView 的按钮事件 (UIControlEventTouchUpInside) 不会在单击时触发,而是仅在长按时触发。如果 SwiftUI 视图附加了点击手势,则 UIView 按钮上的触摸触发正常,但 SwiftUI 视图的事件也会触发(同时触摸) SwiftUI 的 View 的 .gesture 修饰符允许附加具有不同蒙版的手势,但它们实际上只考虑手势附加到 SwiftUI 视图层次结构,似乎没有考虑附加到它的 UIView 子视图的手势
ios - 不能同时识别 SwiftUI 和 UIView(Controller)Representable 中的触摸/手势
我在 SwiftUI 视图以及 UIKit VC 和嵌入其中的视图中都有控件UIView(Controller)Representable
。在我的(音乐)应用程序中,用户通常会同时与多个控件进行交互,例如调整旋钮或移动滑块。
我注意到 UIKit 内部的控件同时识别触摸/手势没有问题。SwiftUI 中的控件也是如此。但是,如果一个控件在 SwiftUI 视图中,而另一个在 UIKit 视图中,那么只有首先被触摸的那个才会注册触摸。
这是混合 UIKit 和 SwiftUI 视图的已知问题/限制吗?我找不到可以让我指定不防止同时检测到触摸/手势的机制/API。
xcode - 为什么 UIViewRepresentable 的 makeUIView 和 updateUIView 被调用了这么多次 xcode Playground?
我有一个简单的 SwiftUI 包装,带有 UIKit 作为 Playground 上的显示(使用 Xcode 12.1)
看到这么多电话,我很惊讶,makeUIView
如下updateUIView
所示
swiftui - 防止在 UIRepresentableView 中调用 updateUIView()?
我想我需要先更改 a 中的布尔值,UIRepresentableView
然后再将其从 中删除,ContentView
但找不到方法,因为我无法改变结构属性。
为什么我需要那个?因为我需要防止updateUIView()
在视图发布之前被最后一次调用。
所以这可能是一个XY问题......无论如何,我迷路了。
我有一个这样的模型:
这是哪里LottieView
:
在我的ContentView
我只显示一个LottieView
如果在已发布的数组中有一个最近的:
现在这可以正常工作了,但是当我在模型中LottieView
从已发布的数组中删除最后updateUIView()
一个时,SwiftUI 会最后一次调用 func,导致在从视图中删除之前再次重新创建动画LottieView
,从而导致可见的闪烁.
LottieView
所以我想我会添加一个布尔值,我可以在从已发布数组中删除最后一个之前更新它,并在中执行 if/else updateUIView()
,但是......这甚至可能吗?我找不到办法。
理想情况下,我将只创建动画视图makeUIView()
并且什么都不做,updateUIView()
但这是不可能的,我需要先删除子视图,否则之前显示的动画不会被新的动画替换。
swiftui - UITextField 的 UIViewRepresentable 在 SwiftUI 中产生损坏的 UI 行为
我已将我们的生产代码分解为基本要素。
我们为 UITextField 编写了一个 UIViewRepresentable。为了使 textfeild 成为第一响应者,我们将 IsEditing 定义为可绑定值。我们将此值传递给协调器,并在 UITextFieldDelegate 的 didBeginEditing 和 didEndEditing 中相应地更新它。基本上一切都按预期工作,但是一旦您在此视图上方显示一个视图,该视图也声称 FirstResponder 并再次导航回来,下面的 UI 似乎已损坏。乍一看,一切看起来都不错,但如果您在视图调试器中仔细观察,恐怖就会变得明显。控件似乎在视觉平面上正确定位,但框架在引擎盖下略有偏移。
这是我们的 UIViewRepresentable 的代码:
这是产生错误的代码。
以下是重现该行为的步骤:
- 您需要激活第一个文本字段。
- 按显示表对话框
- 在新显示的视图中激活文本字段
- 按关闭按钮关闭工作表
- 尝试单击显示表按钮->单击的位置现在似乎有偏移
我们已经尝试了很多方法来解决问题,但还没有找到好的解决方案或实际原因。有谁知道出了什么问题?
更新:使用简单的 SwiftUITextField 时也会出现此问题。
swiftui - Swiftui - 从 UIViewRepresentable 访问 UIKit 方法/属性
我已经使用 UIViewRepresentable(下面的代码)基于 UITextView 创建了一个 SwiftUI TextView。在 Swiftui 中显示文本工作正常。
但是现在我需要从我的模型中访问 UITextView 的内部函数。如何调用例如 UITextView.scrollRangeToVisible(_:) 或访问 UITextView.isEditable 之类的属性?
我的模型需要根据内部模型状态进行这些修改。
有任何想法吗 ?谢谢
(ps 我知道 SwiftUI 中的 TextEditor,但我需要对 iOS 13 的支持!)