Отклонить Контроллер Представлений Сообщений

У меня есть расширение 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/

Другие вопросы по тегам