Отклонить Контроллер Представлений Сообщений
У меня есть расширение iMessage в swift, которое находится в расширенной презентации, когда пользователь нажимает кнопку. Как только эта кнопка нажата, она должна полностью закрыть вид или, по крайней мере, вернуться в компактный режим. Я не уверен, что не так. Вот так вызывается переход из моей кнопки:
self.didTransition(to: MSMessagesAppPresentationStyle.compact)
и действие:
override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
guard presentationStyle == .expanded else { return }
self.dismiss(animated: true) {
}
}
Но это не работает. Кто-нибудь знает, что я делаю не так?
2 ответа
На самом деле правильная функция для вызова такова:
requestPresentationStyle(MSMessagesAppPresentationStyle)
Вы можете назвать это так в своем MSMessageAppViewController
:
self.requestPresentationStyle(.compact)
Вам не нужно ничего переопределять;) Надеюсь, это поможет вам!
Примечание: ознакомьтесь с документацией здесь: https://developer.apple.com/reference/messages/msmessagesappviewcontroller
Это вам очень поможет!
Вы также можете использовать dismiss()
функция для закрытия развернутого MSMessagesAppViewController
целиком.
Обратите внимание, это не то же самое, что dismiss(animated:)
который отклоняет модально представленный vc. Документы здесь.
Эти функции помогут перейти из одного переходного состояния в другое в MSMessagesViewController:-
requestPresentationStyle(.expanded)
requestPresentationStyle(.compact)
Выше метод вызовет willTransition и didTransition: -
override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
// Здесь мы можем проверить presentationStyle и переместить контроллер в соответствии с необходимостью. т.е.
let controller: UIViewController
if presentationStyle == .compact {
controller = instantiateCompactController()
}
else {
controller = instantiateExpandController()
}
//and then Present Controller
}
Для получения дополнительной информации: https://developer.apple.com/videos/play/wwdc2016/224/