2016-11-21 5 views
0

У меня проблема, и я пытаюсь установить пользовательский интерфейс чата Smooch, но это всегда отображается в полноэкранном режиме в iPhone 6s. Кто-нибудь может мне помочь?Как поместить пользовательский интерфейс чата Smooch в popover?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "popoverSegue" { 
     // Get the new view controller using segue.destinationViewController. 
     let popoverViewController: SmoochViewController = segue.destination as! SmoochViewController 
     //popoverViewController.newViewController = Smooch.newConversationViewController() 
     popoverViewController.modalPresentationStyle = UIModalPresentationStyle.popover 
     popoverViewController.popoverPresentationController!.delegate = self 
    } 
} 

Вот как я пытаюсь представить SmoochViewController, который отображает чат.

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    // Adding some values to the user 
    SKTUser.current()!.firstName = "Kevin" // User's first name 
    SKTUser.current()!.lastName = "Bustillos Acurio" // User's lastname 
    SKTUser.current()!.email = "[email protected]" // User's email 
    SKTUser.current()!.signedUpAt = Date() // User's sign in date 

    let conversation: SKTConversation = Smooch.conversation()! 

    // Debugging messages (can be deleted) 
    for message in conversation.messages! { 
     print("MESSAGES \((message as! SKTMessage).text)") 
    } 

    let newViewController: UIViewController = Smooch.newConversationViewController()! 

    // Display Smooch UI (it displays the UI, the messages, avatars, all...) 
    Smooch.showConversation(from: newViewController) 


    // Just for debugging 
    print("USER ID \(SKTUser.current()!.userId)") 
    print("SMOOCH ID \(SKTUser.current()!.smoochId)") 
    print("CURRENT USER FIRST NAME: \(SKTUser.current()!.firstName)") 
    print("CURRENT USER LASTNAME: \(SKTUser.current()!.lastName)") 
    print("CURRENT USER EMAIL: \(SKTUser.current()!.email)") 
    print("CURRENT USER DATE: \(SKTUser.current()!.signedUpAt)") 
} 

И это, как я пытаюсь представить чат в другом UIViewController

Спасибо!

ответ

2

Режим отображения по умолчанию для popovers на iPhone - это полный экран. Если вы хотите истинный поповер, вам необходимо реализовать метод adaptivePresentationStyle(for:) и вернуть .none

https://rbnsn.me/ios-8-popover-presentations

Я был в состоянии получить контроллер представления, чтобы появиться в пироге, используя этот код

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    let newViewController: UIViewController = Smooch.newConversationViewController()! 

    newViewController.modalPresentationStyle = .popover 
    newViewController.popoverPresentationController!.delegate = self 
    newViewController.popoverPresentationController!.sourceView = self.view 

    self.present(newViewController, animated: true, completion: nil) 
} 

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { 
    return .none 
} 

Однако ввод текста не очень хорошо сочетается с клавиатурой, когда он представлен таким образом, поэтому было бы лучше представить его в полноэкранном режиме после всех

 Смежные вопросы

  • Нет связанных вопросов^_^