如何获得UITextView的UIViewController?

时间:2009-11-24 05:52:07

标签: uitextview superview

我正在处理UITextViewDelegate中的代码。每个函数都会收到接收事件的UITextView实例,例如:

- (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.superview.superview.superview.superview.superview = UIWindow
  • textView.superview.superview.superview.superview.superview.superview = nil

我通过打印出类似

的内容找到了类名
printf( "class: %s\n", [[[uiv class] description] UTF8String] ) ;

2 个答案:

答案 0 :(得分:4)

没有办法做到这一点。 UIViewController知道它管理的是什么UIView,但是视图没有返回其视图控制器的引用(甚至可能没有视图控制器)。

-superview方法返回另一个UIView,它与UIViewController不同。

为什么需要视图控制器?你想要完成什么?

顺便说一句,你可以使用NSLog而不是printf来节省一些按键:

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

答案 1 :(得分:2)

出于好奇,为什么你的视图控制器不能充当UITextViewDelegate?在我见过的大多数代码中(包括我自己的代码),视图控制器本身都倾向于充当代理。

如果需要将此功能提取到单独的类中,可能视图控制器可以将对自身的引用传递给UITextViewDelegate。