禁用 iMessage 应用调整大小

Disable iMessage App Resizing

我正在为 iPhone 开发 iMessage 应用程序。它目前允许用户按箭头将应用程序从键盘大小调整为全屏。对于我的应用程序,全屏视图不是必需的。

是否可以在 iMessage 应用程序中禁用调整大小?

谢谢

恐怕这个箭头永远叫全屏布局。你必须同时处理这两个问题。 但这里有一些想法:

  • 当用户点击箭头时,它会触发该方法 didTransition(to: MSMessagesAppPresentationStyle)。所以你可以 requestPresentationStyle(_ presentationStyle: MSMessagesAppPresentationStyle) 使用紧凑模式。这样当它尝试全屏时,它会回到紧凑模式
  • 我也不确定,但您可以使用 requestPresentationStyle(_ presentationStyle: MSMessagesAppPresentationStyle) 始终显示紧凑模式,而不是扩展模式。

也可以在这里看看:https://developer.apple.com/reference/messages/msmessagesappviewcontroller/1649184-requestpresentationstyle

他们是这样说的:

Note, however, that the user should have ultimate control over the extension’s presentation style. If the user chooses to change the presentation style, you should respect that choice.

除了以上 :- 当此人回复消息时,还有 2 种情况

活动和非活动状态:-

活跃状态的生命周期 :

iMessage Tap 

  func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) 

func didSelect(_ message: MSMessage, conversation: MSConversation) 

  func didTransition(to presentationStyle: MSMessagesAppPresentationStyle)

InActive 状态的生命周期 :

iMessage Tap   

 didBecomeActive(with conversation: MSConversation)   func viewWillAppear(_ animated: Bool) 

  func viewDidAppear(_ animated: Bool)

所以在非活动状态 willTransition 将控制它。

但在活动状态下,您无法控制转换,因此默认情况下它将以展开形式打开。在 didBecomeActive 方法中,您必须调用以下函数才能转换为不同的样式。

这些函数将有助于在 MessagesViewController 中从一种过渡状态移动到另一种状态:-

   requestPresentationStyle(.expanded) 
   requestPresentationStyle(.compact)

以上方法将调用 willTransition 和 didTransition:-

  override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {

  //Here we can check the presentationStyle and move the Controller according to    need . i.e

    let controller: UIViewController
    if presentationStyle == .compact {
        controller = instantiateCompactController()
    }
    else {
        controller = instantiateExpandController()
    }

 //and then Present Controller 

}

更多信息: https://developer.apple.com/videos/play/wwdc2016/224/