两次而不是一次保存屏幕截图时出错[重复]

Posted

技术标签:

【中文标题】两次而不是一次保存屏幕截图时出错[重复]【英文标题】:Error saving a screenshot twice instead of once [duplicate] 【发布时间】:2015-12-14 17:30:23 【问题描述】:

我希望能成功保存截图,但到现在为止,我的代码保存了两次屏幕,我不知道为什么。

我有以下几点:

class finalPostal: UIViewController

    var gesture = UILongPressGestureRecognizer()


  override func viewWillAppear(animated: Bool) 

        gesture = UILongPressGestureRecognizer(target: self, action: "screenShotMethod")

        gesture.minimumPressDuration = 1.5

        view.addGestureRecognizer(gesture)
    


   func screenShotMethod() 


        let layer = UIApplication.sharedApplication().keyWindow!.layer
        let scale = UIScreen.mainScreen().scale
        UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);

        layer.renderInContext(UIGraphicsGetCurrentContext()!)
        let screenshot = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)

        let alertSaved = UIAlertController(title: "Caputra guardada", message: "", preferredStyle: .ActionSheet)

        alertSaved.addAction(UIAlertAction(title: "Ok", style: .Default, handler: action in

            self.view.removeGestureRecognizer(self.gesture)

        ))

        presentViewController(alertSaved, animated: true, completion: nil)

    

【问题讨论】:

请修正您的代码格式 你要等多久。根据按下的持续时间,它可能会被多次调用 在代码上设置断点,看看该方法是否被命中两次。如果是,请使用 bool 变量以避免多次点击 你可以创建一个函数来确保它没有被经常调用。 我尝试将持续时间更改为 3 秒,但仍然错误 【参考方案1】:

你必须检查手势的状态,只有当状态等于时才能截图

UIGestureRecognizerStateEnded

在你的 screenShotMethod 方法中

【讨论】:

以上是关于两次而不是一次保存屏幕截图时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在空手道 UI 自动化框架中截取屏幕截图并将其保存为当前日期和时间 [重复]

始终将屏幕截图保存在“照片”中相同的自定义名称应用相册中

使用 Java 代码在 Android 上捕获屏幕截图 [重复]

如何捕获画布的屏幕截图 [重复]

保存屏幕截图时 Xcode 8.2 模拟器崩溃

Objective C 中的部分屏幕截图