Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动SwiftUI计时器_Swift_Xcode_Timer - Fatal编程技术网

启动SwiftUI计时器

启动SwiftUI计时器,swift,xcode,timer,Swift,Xcode,Timer,请告诉我,有这样的代码吗。 当您单击webview时,计时器将启动,5秒钟后将显示通知。如何在不单击webview的情况下立即启动计时器(删除按钮操作)。 默认情况下,webview应该启动 import SwiftUI import WebKit import UserNotifications struct ContentView: View { @State var alert = false var body: some View { Button(action: {

请告诉我,有这样的代码吗。 当您单击webview时,计时器将启动,5秒钟后将显示通知。如何在不单击webview的情况下立即启动计时器(删除按钮操作)。 默认情况下,webview应该启动

import SwiftUI
import WebKit
import UserNotifications

struct ContentView: View {
  @State var alert = false
  var body: some View {
    Button(action: {
      UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
        (status, _) in
        if status {
          let content = UNMutableNotificationContent()
          content.title = "HEAD"
          content.body = "TEXT"
          let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
          let request = UNNotificationRequest(identifier: "noti", content: content, trigger: trigger)
          UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
          return
        }
        self.alert.toggle()
      }

    }) {
      WebView().edgesIgnoringSafeArea(.all)
    }.alert(isPresented: $alert) {
      return Alert(title: Text("Please Enable Notification Access In Settings Pannel !!!"))
    }
  }
}

struct WebView: UIViewRepresentable {
  func makeUIView(context: Context) - > WKWebView {
    let webView = WKWebView()
    webView.scrollView.isScrollEnabled = false
    return webView
  }


  func updateUIView(_ webView: WKWebView, context: Context) {
    let liveView = "https:/*"
    if let url = URL(string: liveView) {
      let request = URLRequest(url: url)
      webView.load(request)
      let timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) {
        (timer) in
        webView.evaluateJavaScript("document.getElementById('ses').value") {
          (result, error) in
          print(result!)
        }
      }
    }
  }
}

struct ContentView_Previews: PreviewProvider {
  static
  var previews: some View {
    ContentView()
  }
}

您可以使用
fire()
方法立即启动计时器

像这样:

let timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) {
        (timer) in
        webView.evaluateJavaScript("document.getElementById('ses').value") {
          (result, error) in
          print(result)
        }
}
timer.fire()