通知每分钟发射6次(swift4)

时间:2018-01-03 19:54:37

标签: ios date notifications swift4 picker

每当我的通知计时器熄灭时,它会在一分钟内重复6次。我只希望每分钟发出一次通知。如何编写代码,以便通知每分钟只发送一次。

import UIKit
class ViewController: UIViewController {
    var timer = Timer()
    var passingDate : Date?
    @IBOutlet var dptext: UITextField!
    let datePicker = UIDatePicker()

    override func viewDidLoad() {
        createDatePicker()
        timer  = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(ViewController.testDate), userInfo: nil, repeats: true)
    }

    func createDatePicker() {
        datePicker.datePickerMode = .dateAndTime
        let toolbar = UIToolbar()
        toolbar.sizeToFit()

        let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
        toolbar.setItems([doneButton], animated: false)

        dptext.inputAccessoryView = toolbar
        dptext.inputView = datePicker
    }

    @objc func testDate() {
        if Calendar.current.isDate(datePicker.date, equalTo: Date(), toGranularity: .minute) {
            print("success")
            if let passingDate = passingDate, Calendar.current.isDate(datePicker.date, equalTo: passingDate, toGranularity: .minute) {
                // Previous date existing, and is in the same minute as the current date : do nothing
                return
            }
            passingDate = datePicker.date
            print("success")
        }
    }

    @objc func donePressed() {
        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = .short
        dateFormatter.timeStyle = .short
        dptext.text = dateFormatter.string(from: datePicker.date)
        self.view.endEditing(true)
    }
}

1 个答案:

答案 0 :(得分:1)

timeInterval10更改为60

timer  = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(ViewController.testDate), userInfo: nil, repeats: true)