[英]Check if iPhone can send texts w/ MFMessageComposeViewController
[英]iphone opengl backing becomes w=0 h=0 after MFMessageComposeViewController
我有一個適用於iPhone / iPad的opengl游戲(通用)。 我添加了使用MFMessageComposeViewController發送SMS消息的功能。 在真實的iPhone中進行測試。 SMS作曲家表單在我的視圖上動起來了,我可以發送或不發送消息,didFinishWithResult被調用,當我[self dismissModalViewControllerAnimated:YES]消失時,我的glview被要求進行layoutSubviews。 那時,后備寬度和高度現在為零,並且我的幀緩沖區狀態檢查失敗。 self.layer.frame.size.width仍為320x460。
- (void)layoutSubviews
{
NSLog(@"layoutSubviews");
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];
[self drawView];
}
我的glView確實有一個UIViewController,可以在其中處理iPad的方向更改,還可以在其中放置MFMessage。 (從技術上講,我想因為它是通用的,所以有兩個不同的viewController,兩個App Delegates和兩個筆尖-但我在這里使用的是iPhone,因為iPad不會發短信)。 在iPad上,當方向改變時會調用Subviews,我們以新的大小銷毀並重新創建幀緩沖區,一切都很好。 但是在這里,當從發送SMS返回時,它在重新創建上失敗。 如果需要,我可以發布代碼,但是它是標准的創建幀緩沖區代碼。
另一個重要的一點是,我正在使用通知來告知ViewController內部的方法來啟動sms內容。 我嘗試僅在glview中使用這些方法並將其設置為MFMessageComposeViewControllerDelegate,但隨后出現錯誤,因為glview是UIView而不是UIViewController。
有任何想法嗎?
不知道這是一個錯誤還是要解決的問題,但是我不得不創建另一個視圖,使self.view = anotherView,保留我的glview並在顯示模式之前移除removeFromSuperview。 然后等我的視線恢復原狀,直到一切恢復原狀。
如果有人需要更多信息,請告訴我。
使用實際答案進行編輯:
這是一個錯誤,而且我懷疑它與狀態欄有關。 我的應用程序沒有狀態欄。 但是當我
[self presentModalViewController:controller animated:YES];
SMS消息編輯器視圖的確顯示了iphone狀態欄。 當它被關閉並且我的應用顯示在下面時,我的幀緩沖區變得很悶。 我已經想出了一些奇怪的方法來切換視圖,以保護我的glview幀緩沖區-但后來想出了在解雇之前添加一個statusBarHidden的方法,現在一切都很好了。 這是解雇代碼:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result {
// Notifies users about errors associated with the interface
switch (result)
{ ... }
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
[self dismissModalViewControllerAnimated:YES];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.