我在 SwiftUI 中有一个按钮,我希望能够对“点击按钮”(正常点击/点击)和“长按”执行不同的操作。
这在 SwiftUI 中可能吗?
这是我现在拥有的按钮的简单代码(仅处理“正常”点击/触摸案例)。
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加一个“长按手势”,但它仍然只“执行”“正常/短”点击。这是我试过的代码:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
杰拉德
如何将文本字段的内容复制到 iOS 剪贴板?
我有以下代码 & 想用将文本字段的内容复制到 iOS 剪贴板的语句替换“print(..)”语句。
Text(self.BLEinfo.sendRcvLog)
.onTapGesture(count: 2) {
print("Copy text field content to ClipBoard Here..")
}
Run Code Online (Sandbox Code Playgroud)
似乎找不到任何 SwiftUI 示例如何执行此操作。
谢谢!
我在 SwiftUI 视图中使用计时器,如下面的代码所示。它按预期工作,但在某些情况下我想取消/停止该计时器。计时器变量上似乎没有“.cancel”属性或方法。如何取消这个计时器?任何想法/提示?
import SwiftUI
struct ContentView: View {
@State private var selection = 2
@State private var rotation: Double = GBstrtest
let timer = Timer.publish (every: 0.8, on: .current, in: .common).autoconnect()
var body: some View {
TabView(selection: $selection){
Text("Settings")
.font(.title)
.tabItem {
VStack {
Image(systemName: "gear")
.font(Font.system(.title ))
Text("Settings")
}
}
.tag(0)
VStack {
Divider().padding(2)
ZStack {
Image("image1")
.resizable()
.aspectRatio(contentMode: .fit)
Image("image2")
.resizable()
.aspectRatio(contentMode:.fit)
.rotationEffect(.degrees(rotation))
.animation(.easeInOut(duration: 0.3) )
.padding(EdgeInsets(top: 0, leading: 50, bottom: 0, trailing: 50))
}
Spacer()
} …Run Code Online (Sandbox Code Playgroud) 自从将我的 iPhone 升级到 iOS 15 并在 Mac 上升级到 Xcode 13 后,我在使用 Xcode 测试/调试任何 SwiftUI 应用程序时遇到了问题。即使是带有简单“hello world”示例的新 Xcode 项目,在按下 Xcode“开始”按钮时也会以这种方式运行(无论目标是模拟器还是装有 iOS 15 的物理 iPhone)。
应用程序似乎已正确上传到目标,但目标在显示应用程序屏幕之前显示空白屏幕超过一分钟(分钟)。
当 Xcode 调试器断开连接并在目标(无论是模拟器还是物理 iPhone)上手动启动应用程序时,它似乎工作正常(首先不会出现任何白屏)。
我的所有 SwiftUI 应用程序(以及简单的 Xcode Swift“Hello World”示例)都有相同的行为,这些应用程序已经工作了很长时间,没有任何问题。
我仍然安装了 Xcode 12.5,它现在表现出相同的行为(即使目标操作系统是 iOS 14.5),并且应用程序已上传到我的 iOS 15 iPhone。
基本上不可能测试和调试存在此问题的应用程序。
有没有其他人有这个问题?
有什么已知的解决方案或建议吗?
谢谢!
我在SwiftUI中有一个简单的List。代码和屏幕截图如下。我想减少列表中每一行的高度(以使行和文本行之间的间距更小)。
我已经尝试过向HStack添加“ .frame(height:20)”,但是它仅允许增加行距!
有没有办法做到这一点?
谢谢!
杰拉德
import SwiftUI
struct PressureData: Identifiable {
let id: Int
let timeStamp: String
let pressureVal: Int
}
struct ContentView : View {
@State var pressureList = [
PressureData(id: 0, timeStamp: "11:49:57", pressureVal: 10),
PressureData(id: 1, timeStamp: "11:49:56", pressureVal: 8),
PressureData(id: 2, timeStamp: "11:49:55", pressureVal: 9),
PressureData(id: 3, timeStamp: "11:49:54", pressureVal: 1),
]
var body: some View {
VStack {
Text("Pressure Readings")
.font(.system(size: 30))
List(pressureList) { row in
HStack {
Spacer()
Text(row.timeStamp)
Text("--->")
Text(String(row.pressureVal))
Spacer()
} …Run Code Online (Sandbox Code Playgroud) 我在 SwiftUI 中有一个图像,我希望它永远“脉动”(每秒左右来来去去)。
我尝试了很多方法,但似乎无法达到我想要的效果。我尝试过的事情之一是下面的代码(它似乎什么也没做!:))。
Image(systemName: "dot.radiowaves.left.and.right" )
.foregroundColor(.blue)
.transition(.opacity)
.animation(Animation.easeInOut(duration: 1)
.repeatForever(autoreverses: true))
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
swiftui ×5
animation ×1
button ×1
copy-paste ×1
debugging ×1
formatting ×1
ios15 ×1
listview ×1
long-press ×1
timer ×1
xcode13 ×1