2009-11-24 75 views
2

我正在處理UITextViewDelegate中的代碼。每個功能有接收所收到的事件,例如UITextView的實例:如何在給定UITextView的情況下獲得UIViewController?

 
- (void)textViewDidBeginEditing:(UITextView*)textView 
{ 

} 

內部的方法但是,只給TextView的,我需要訪問包含的TextView的UIViewController中。

使用textView.superview(它甚至多個階段),似乎並沒有工作 - 我只得到:

  • textView.superview = UIView的
  • 的實例
  • textView.superview.superview = UIViewControllerWrapperView
  • textView.superview.superview.superview = UINavigationTransitionView
  • textView.superview.superview.superview.superview = UILayoutContainerView
  • textView.supervi ew.superview.superview.superview.superview =的UIWindow
  • textView.superview.superview.superview.superview.superview.superview =零

我打印出類似

 
printf("class: %s\n", [[[uiv class] description] UTF8String]) ; 
發現的類名稱

回答

4

沒有辦法做到這一點。一個UIViewController知道它管理的是什麼UIView,但是一個視圖沒有引用回它的視圖控制器(甚至可能沒有視圖控制器)。

-superview方法返回另一個UIView,它與UIViewController不同。

爲什麼你需要視圖控制器?你想達到什麼目的?

順便說一句,您可以通過使用代替了printf NSLog的幾個按鍵保存自己:

NSLog(@"class: %@", [uiv class]); 
2

出於好奇,爲什麼不是你充當UITextViewDelegate視圖控制器?在我看到的大多數代碼中(包括我自己的代碼),視圖控制器本身都傾向於充當代表。

如果您需要將此功能提取到單獨的類中,則視圖控制器可能會將引用傳遞給UITextViewDelegate。

+0

嗯,好點。也許我的viewcontroller應該作爲UITextViewDelegate。我只是沒有想到,當我開始這樣做會有所幫助,但真的,在這裏它會:) – bobobobo 2009-11-24 07:32:51

相關問題