2012-06-04 55 views
0

我正在嘗試在UIPopoverController中嵌入可編輯的UITextView,並且......奇怪的結果。我已經採取的步驟是:可編輯的UITextView是否可以嵌入到UIPopoverController中?

  1. 創建一個自定義的UIViewController類,並創建與裏面一個UITextView是控制器的.xib文件。
  2. 當應該調出控制器的UI操作發生時(觸及內部),我從.xib文件實例化控制器及其視圖。
  3. 我創建了一個新的UIPopoverController,將視圖控制器剛剛實例化爲內容視圖。
  4. 我presentPopoverFromRect目前它:inView:permittedArrowDirections:動畫:

下面是一些示例代碼:

- (void)noteButtonPressed:(id)sender { 
    self.noteview = [[MyTextPopupViewController alloc] initWithNibName:@"MyTextPopupViewController" bundle:nil ]; 
    UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:self.noteview]; 
    self.popover = popoverController; 
    self.popover.delegate = self; 
    [self.popover presentPopoverFromRect:((UIView*)sender).frame 
            inView:self.view 
       permittedArrowDirections:UIPopoverArrowDirectionAny 
           animated:YES]; 
} 

然後,裏面MyTextPopupViewController,我確保文本視圖是第一個響應者調出鍵盤:

- (void)viewDidAppear:(BOOL)animated { 
    [self.view becomeFirstResponder]; 

    [super viewDidAppear:animated]; 
} 

而且所有的作品...直到它沒有。有時候,它可以完美運作;其他時候,無論是立即或幾次按鍵後,應用程序通過退出主事件循環(!)而崩潰。沒有例外(至少不是lldb捕獲的),但是應用程序只是在模擬器和硬件上停止。

有什麼想法?有沒有人得到這個成功的工作,或知道它確實沒有?

+0

在'MyTextPopupViewController'中,你是否實現了'textView:shouldChangeTextInRange:replacementText:'(或其他可能導致問題的委託方法)?如果是這樣,請發佈該代碼。 – lnafziger

+0

另外,你應該在你的'viewDidAppear'中切換兩行,以便在你做任何事情之前正確調用super。 – lnafziger

+0

我目前沒有實現任何的UITextViewDelegate方法。 – Christophe

回答

0

我認爲UIPopoverController實例需要是你的代碼中的一個屬性。

相關問題