刷新控制器声音

问题描述

因此,我的UITableViewController中具有标准的刷新控制器,该控制器可更新表视图中的数据。

 lazy var refresher: UIRefreshControl = {
    let refreshControl = UIRefreshControl()
    refreshControl.tintColor = .lightGray
    refreshControl.addTarget(self,action: #selector(refresh),for: .valueChanged)
    return refreshControl
}()

    @objc func refresh(){
    getmethod()
    self.tableView.reloadData()
    let deadline = dispatchTime.Now() + .milliseconds(500)
    dispatchQueue.main.asyncAfter(deadline: deadline){
        self.refresher.endRefreshing()
    }

因此,我想在用户刷新开始时添加声音,并在刷新完成时添加声音。与Facebook或Twitter应用程序中的相同。有可能做到吗?

解决方法

您可以通过此简单的解决方案实现目标。首先在您的课程上导入AVFoundation,然后将音频文件拖到xcode中,将其添加到您的项目中:

enter image description here

然后创建一种播放声音的方法(如果您的文件不是mp3,则更改ofType参数值):

private var player: AVAudioPlayer?

func playSound(soundFileName: String) {
    guard
        let urlPath = Bundle.main.path(forResource: soundFileName,ofType: "mp3")
        else { return }
    
    let url = URL(fileURLWithPath: urlPath)
    
    do {
        player = try AVAudioPlayer(contentsOf: url)
        player?.prepareToPlay()
        player?.play()
    } catch {
        print(error)
    }
}

在刷新开始时最后调用该方法

@objc func refresh(){
    playSound(soundFileName: "refresh-start")
    getMethod()
    self.tableView.reloadData()
    let deadline = DispatchTime.now() + .milliseconds(500)
    DispatchQueue.main.asyncAfter(deadline: deadline){
        self.refresher.endRefreshing()
    }
}

以及刷新结束时。