【发布时间】:2021-07-24 21:22:50
【问题描述】:
我正在制作一个使用 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 更改 UITextView 在 viewDidLoad() 函数中的文本,但不会在 didTransition(to) 函数中,因为它永远不会运行。
我做错了吗?
EditorViewController 是由show (e.g. Push) segue 提供的视图控制器,并附有NavigationController。
我该如何解决这个问题?
编辑:当视图控制器嵌入导航控制器时,willTransition 和 didTransition 函数不会运行。有没有办法来解决这个问题? (它可以在没有导航控制器的情况下工作,但我需要此项目的导航控制器)。
【问题讨论】:
-
尝试使用打印并告诉我们打印时会发生什么
-
@Evergreen 我试过这个,当我调整它的大小时什么都没有打印出来。
-
这是一个困境!尝试使用
willTransition(),如果不起作用,请尝试在viewDidLoad()中使用self.presentationStyle,看看它是否发生了变化,如果是,请调用一个新函数来执行您想要的任何操作。 -
@Evergreen 我试过
willTransition(),它也没有运行。你认为这可能是因为它不是主视图控制器,而是使用showsegue 和performSegue函数呈现的? 编辑:我创建了一个空白 Xcode 项目,它似乎在那个项目中工作。不知道为什么它不会在其他项目中运行。 -
@Evergreen 我创建了一个新项目并意识到由于某种原因,当 ViewController 嵌入导航控制器时,
willTransition anddidTransition` 函数不会运行。不过,我找不到任何解决方法,也找不到任何可能发生这种情况的原因。
标签: swift xcode imessage imessage-extension msmessage