Xcode:didTransition 不会在 iMessage 扩展中运行

用户14210589

我正在制作一个使用didTransition(to:). 但是,当我在模拟器中调整 iMessage 扩展的大小时,该功能不会运行。我做错了什么吗?

这是我的代码:

import UIKit
import Messages

class EditorViewController: MSMessagesAppViewController {
    @IBOutlet weak var input: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        input.text = "not changed"
    }

    // This part isn't working:

    override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
        input.text = "changed"
    }
}

当我在模拟器中调整它的大小时,没有任何反应。input.text改变UITextView的文本viewDidLoad()功能,但不是在didTransition(to)因为它从来没有运行功能。

我做错了什么吗?

EditorViewController是由所呈现的视图控制器show (e.g. Push)SEGUE,和具有NavigationController连接到它。

这是它没有改变的 gif:输入的文本永远不会改变

调整 iMessage 扩展程序大小时输入的 gif 不会改变

我该如何解决这个问题?

编辑:willTransitiondidTransition当视图控制器嵌入导航控制器功能不运行。有没有办法解决这个问题?(它在没有导航控制器的情况下工作,但我需要这个项目的导航控制器)。

罗宾施密特

正如此答案中所指出的,iMessage 应用程序的入口点需要是 MSMessagesAppViewController 的子类,因此您不能直接将 NavigationViewController 用作根控制器,直到 Apple 添加对此行为的支持。

但正如建议的那样,您可以通过以下解决方法解决此问题:

import UIKit
import Messages

class MyRootVC: MSMessagesAppViewController {
    var navVC: UINavigationViewController!
    var editorVC: EditorViewController!
    
    func viewDidLoad() {
        super.viewDidLoad()

        editorVC = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() as! EditorViewController
    
        navVC = UINavigationController(rootViewController: editorVC)
        self.addChild(navVC)
        self.view.addSubview(navVC.view)
        navVC.didMove(toParent: self)
    }

    override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
        editorVC.input.text = "changed"
    }
}

class EditorViewController: UIViewController {
    @IBOutlet weak var input: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()
    
        input.text = "not changed"
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章