簡體   English   中英

啟動 SwiftUI 計時器

[英]Starting the SwiftUI Timer

請告訴我,有沒有這樣的代碼。 當您單擊 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM