使用滑动手势关闭视图 - Swift 4

vAp*_*App 0 ios swift swift4

在我的应用程序中,当用户向下滑动视图时,我希望视图关闭到某个帧。这是我迄今为止尝试过的,但由于某种原因,它一直给我这个错误:

“#selector”的参数不引用“@objc”方法、属性或初始值设定项

这是我的代码如下:

class VideoLauncher: NSObject {

@objc func dismissView(myView: UIView) {
    UIView.animate(withDuration: 0.4) {
        if let theWindow = UIApplication.shared.keyWindow {
        myView.frame = CGRect(x:theWindow.frame.width - 15 , y: theWindow.frame.height - 15, width: 10 , height: 10)
        }
    }
}

func showVideoPlayer() {

    print("showing player")
    if let keyWindow = UIApplication.shared.keyWindow {
        let view = UIView(frame: keyWindow.frame)
        view.backgroundColor = UIColor.spaceBlue
        view.frame = CGRect(x: keyWindow.frame.width - 10, y: keyWindow.frame.height - 10, width: 10, height: 10)
        let videoPlayerView = VideoPlayerView(frame: keyWindow.frame)
        keyWindow.addSubview(view)
        view.addSubview(videoPlayerView)
        let slideDown = UISwipeGestureRecognizer(target: self, action: #selector(dismissView(myView: view)))
        view.addGestureRecognizer(slideDown)

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
            view.frame = keyWindow.frame
        }, completion: { (completedAnimation) in
            UIApplication.shared.isStatusBarHidden = true
        })
    }
}

}
Run Code Online (Sandbox Code Playgroud)

Vin*_*App 7

你必须像这样使用:

let slideDown = UISwipeGestureRecognizer(target: self, action: #selector(dismissView(gesture:)))
slideDown.direction = .down
view.addGestureRecognizer(slideDown)
Run Code Online (Sandbox Code Playgroud)

你的功能:

@objc func dismissView(gesture: UISwipeGestureRecognizer) {
    UIView.animate(withDuration: 0.4) {
        if let theWindow = UIApplication.shared.keyWindow {
            gesture.view?.frame = CGRect(x:theWindow.frame.width - 15 , y: theWindow.frame.height - 15, width: 10 , height: 10)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)