Xcode: 在 iMessage 扩展中 didTransition 不会 运行
Xcode: didTransition to Won't Run in iMessage Extension
我正在制作一个使用 didTransition(to:)
的 iMessage 扩展。但是,当我在模拟器中调整 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
在 viewDidLoad()
函数中更改了 UITextView
的文本,但在 didTransition(to)
函数中没有,因为它从不 运行s.
我是不是做错了什么?
EditorViewController
是由 show (e.g. Push)
segue 提供的视图控制器,并附加了一个 NavigationController
。
这是它不变的 gif:
输入的文本永远不会改变
我该如何解决这个问题?
编辑: 当视图控制器嵌入到导航控制器中时,willTransition
和 didTransition
函数不会 运行。有没有办法来解决这个问题? (它在没有导航控制器的情况下工作,但我需要这个项目的导航控制器)。
正如此 中所指出的,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"
}
}
我正在制作一个使用 didTransition(to:)
的 iMessage 扩展。但是,当我在模拟器中调整 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
在 viewDidLoad()
函数中更改了 UITextView
的文本,但在 didTransition(to)
函数中没有,因为它从不 运行s.
我是不是做错了什么?
EditorViewController
是由 show (e.g. Push)
segue 提供的视图控制器,并附加了一个 NavigationController
。
这是它不变的 gif:
输入的文本永远不会改变
我该如何解决这个问题?
编辑: 当视图控制器嵌入到导航控制器中时,willTransition
和 didTransition
函数不会 运行。有没有办法来解决这个问题? (它在没有导航控制器的情况下工作,但我需要这个项目的导航控制器)。
正如此
但正如建议的那样,您可以通过以下解决方法解决此问题:
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"
}
}