问题标签 [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.

0 投票
1 回答
457 浏览

ios - PDFKit .go(to: ) Method in SwiftUI

hello i want to display a PDF file at page 7 in my SwiftUI app.

I would also like to use the functions .go(to :) and .currentPage() outside the UIViewRepresentable.

The PDF file is shown but at page 1 and not 7 :/

I'm still relatively new to it Swift, can anyone give me a hint?

0 投票
2 回答
1249 浏览

swift - UIViewRepresentable 不更新绑定到 ObservedObject 属性?

此视图是适用于我的 SwiftUI 项目的 UIKit 滑块,因为在 SwiftUISlider中无法更改其轨道颜色,这可能是一个错误,因为您应该能够使用.accentColor. 无论如何,此滑块会根据其值更改其轨道颜色,从绿色变为红色。value如果绑定到一个普通属性,整个事情就可以完美地工作(虽然我的渐变还不是那么好)@State,但是当你尝试将它附加到它的属性时@ObservedObject它会中断,虽然轨道颜色仍然有效,但它永远不会改变基础价值。我想现在这只是一个错误,但更有可能这里有一些东西需要修复。

编辑:它应该如何使用的例子:

0 投票
1 回答
122 浏览

swift - 当通过属性文本值更改添加 lineSpacing 时,TextView UIViewRepresentable 重置 UndoManager

我正在使用此处概述的 TextView UIViewRepresentable https://www.appcoda.com/swiftui-textview-uiviewrepresentable/

它按预期工作,除了一个关于行距的问题。SwiftUI 的 lineSpacing 修饰符似乎对它没有任何影响。因此,我通过在 UIViewRepresentable 中添加以下内容来解决它 func updateUIView(_ uiView: UITextView, context: Context)

正如调整 UITextView 的行距所建议的那样。

因此,完整的功能如下所示:

这可以完成工作,但是会导致 UndoManager 重置。也就是说,只要我做出任何更改,UndoManager 就不会相信有任何事情可以撤消(或重做)。从我的搜索来看,这似乎是更改属性文本值的一般副作用。我想知道是否有可用的解决方法,无论是对我的方法进行调整还是在重置 UndoManager 状态的情况下实现 lineSpacing 的完全不同的方式。

更新:尝试了 Asperi 的建议,但结果喜忧参半。

这是 TextView 和对应的 Coordinator 的完整代码:

如果我在 textViewDidChange 中保留 self.text.wrappedValue = textView.text (取自顶部链接的 AppCoda 教程),那么该建议不起作用。但是,如果我删除它,它似乎可以工作,但还有其他问题,即每当刷新视图(我认为)时,文本会在会话开始时自动重置为原始状态 - 例如,如果我尝试切换到另一个应用程序,我可以在这样做之前看到文本重置,或者当我打开一段 UI 时,例如,降低了 TextView 的不透明度。

0 投票
6 回答
2003 浏览

ios - SwiftUI - WKWebView 的 iOS 13 UIViewRepresentable 获取线程 1:EXC_BREAKPOINT 崩溃

我正在尝试将 WKWebView 移植到 SwiftUI。这是我的代码:

而已。我创建了一个新的 SwiftUI 项目并将其粘贴进去。但是,我收到了这个错误:

线程 1:EXC_BREAKPOINT(代码=EXC_I386_BPT,子代码=0x0)

...控制台中没有打印任何内容。这发生在 iOS 13.0 和 iOS 13.1 上。

在 iOS 13 上崩溃

但是,在 iOS 14.2 上,它运行良好。崩溃似乎也只发生在WKWebView. 例如,如果我将其替换为UITextView,它可以正常运行。

UITextView 没有问题

我在 M1 Mac 上运行 Big Sur 11.0.1,但我认为这应该不是问题。我的 Xcode 版本是 12.2 (12B45b)。

编辑:Big Sur / M1 可能是问题所在。

我刚刚在我的英特尔 Mac Catalina 10.15.5 上的相同版本的 Xcode 上运行它,它运行良好。

在此处输入图像描述

0 投票
1 回答
1202 浏览

ios - 类型“TextView”不符合协议“UIViewRepresentable”

我开始在一个新的干净项目中试验 SwiftUI 的东西。

在这个新项目中,创建了一个符合UIViewRepresentable的结构。这个想法是在 SwiftUI 视图中嵌入一个 UIKit 视图。一切正常。

在我的 IDE 中可见的相同代码显示没有触发错误

在此处输入图像描述

当我尝试在我的旧项目中嵌入完全相同的代码(文件的复制/粘贴)时,问题出现了。

这导致我出现以下错误:

类型“TextView”不符合协议“UIViewRepresentable”

在我的 IDE 中可见相同的代码以显示触发的错误

在此处输入图像描述

总结一下: 在一个干净的项目中,我使用“UIViewRepresentable”协议没有任何问题。在几年前创建的遗留项目中,我只是复制了同一个文件,这引发了编译错误。

这两个项目都有一个最小部署目标 >= iOS 13。

谢谢你的帮助

0 投票
2 回答
586 浏览

ios - 当换行符在最后一行之前 + 行上最后一个字符之后开始时,光标总是跳到 UIViewRepresentable TextView 的末尾

我依赖使用在这里创建的 UIViewRepresentable 的 TextView https://www.appcoda.com/swiftui-textview-uiviewrepresentable/

我遇到的问题是每当我在最后一行之前+ 2) 在行上的最后一个字符之后开始换行符 1)时,光标总是跳到文本中的最后一个字符之后。有任何想法吗?

更新

Leo 的回应在技术上解决了这个问题,但它似乎并不完美,因为存在不希望的滚动行为,尽管插入符号位置现在正确,但不会停止自动滚动到底部。见下文:

在此处输入图像描述

0 投票
1 回答
743 浏览

ios - 在 SwiftUI (UIViewRepresentable) 中向 UITextView 添加占位符

我正在尝试将占位符添加到使用 SwiftUI 制作的 textViews 中,但是在执行textView.text = placeholderor时textView.text = "",什么也没有发生...

使用textView.insertText(placeholder)作品,但后来我不确定如何在输入 textView 时删除占位符(textView.deleteBackward()对于占位符中的每个字母可能)

这是我的 TextView.swift 代码:

0 投票
0 回答
141 浏览

swiftui - 作为 UIViewRepresentable 添加到 UITextView 的工具栏附件仅在 iMessage 扩展应用程序首次启动后显示

希望工具栏一直显示。

非常感谢任何帮助,因为这对用户体验来说是一个真正的拖累。

我已经为 TextView 的键盘添加了一个工具栏,如下所示。
但是,工具栏仅在应用程序运行一次后显示。这意味着工具栏不会在应用程序第一次运行时显示。该应用程序每次在初始加载后都能正常工作。

这是在 IOS 14.3、Xcode 12.3、Swift 5、iMessage 扩展应用程序上。在模拟器或真实设备上失败。

这就是它的称呼...

0 投票
1 回答
414 浏览

ios - SwiftUI:如何调整 UIViewRepresentable 输出的大小?

我尝试在 SwiftUI 上构建一个基本的 Live Photo 应用程序并努力显示所选照片。为此,我尝试为 PHLivePhotoView 制作 UIViewRepresentable:

在我的主视图中,我这样称呼它:

直到我尝试限制视图大小时,它都可以正常工作。我想将预览放入一个带有类似内容的方框中

但 scaledToFit() 似乎不起作用,我所拥有的只是一张裁剪的图像。预期的行为是两个具有保留纵横比的图像和较短边的空白空间。这甚至可能吗?

0 投票
1 回答
175 浏览

swift - 是否可以在 UIViewRepresentable 中使用 Coordinator 检测 PDFView 通知?

我很难弄清楚如何使用 UIViewRepresentable 实现 PDFView。

我知道我可以通过简单的绑定从 SwiftUI -> UIKit 获取变量。

我知道我需要使用协调器来检测 PDFView 通知,例如 PDFViewPageChanged 等,然后通过绑定将数据传回。

我找不到如何使用 Coordinator 获取通知的示例。任何帮助将不胜感激。

谢谢

编辑

我试过的 - 不幸的是我从来没有收到过通知