Неправильная ориентация после отклонения разметки UIActivityViewController - PullRequest
1 голос
/ 14 октября 2019

Приложение поддерживает только книжную, альбомную и альбомную ориентацию и только iPhone. Контроллер представления, из которого отображается UIActivityViewController, не поддерживает вращение и должен быть только в портретной ориентации. Когда PDF-файл разметки открыт, он получает поддерживаемые ориентации из приложения и вращается. Проблема возникает, когда пользователь пытается закрыть представление «Разметка» и нажимает «Готово» в альбомной ориентации. Затем родительский контроллер представления также отображается в альбомном событии, поскольку он поддерживает только книжную ориентацию и не должен автоматически поворачиваться.

Я сделал ошибку Радар с помощью помощника обратной связи Apple.

class ViewController: UIViewController {

    override var shouldAutorotate: Bool {
        false
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        [.portrait]
    }

    @IBAction func action(_ sender: Any) {
        let formatter = UIMarkupTextPrintFormatter(markupText: "")
        let activityViewController = UIActivityViewController(activityItems: ["text to share....", formatter], applicationActivities: nil)
        present(activityViewController, animated: false)
    }
}

Бывает только на iOS13 и новее.

1 Ответ

1 голос
/ 14 октября 2019

Пара вещей, которые вы делаете неправильно, вы должны возвращать false из этой shouldAutorotate также эта переменная также возвращает ориентацию. supportedInterfaceOrientations. замените свой код этим.

override var shouldAutorotate: Bool {
    return false
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return [.portrait]
}

@IBAction func action(_ sender: Any) {
    let formatter = UIMarkupTextPrintFormatter(markupText: "")
    let activityViewController = UIActivityViewController(activityItems: ["text to share....", formatter], applicationActivities: nil)
    present(activityViewController, animated: false)
}
...