我正在处理UITextViewDelegate中的代码。每个函数都会收到接收事件的UITextView实例,例如:
- (void)textViewDidBeginEditing:(UITextView*)textView { }
在该方法中,只有给出textView,我需要访问包含textView的UIViewController。
使用textView.superview
(甚至是它的多个阶段)似乎不起作用 - 我只得到:
我通过打印出类似
的内容找到了类名printf( "class: %s\n", [[[uiv class] description] UTF8String] ) ;
答案 0 :(得分:4)
没有办法做到这一点。 UIViewController知道它管理的是什么UIView,但是视图没有返回其视图控制器的引用(甚至可能没有视图控制器)。
-superview方法返回另一个UIView,它与UIViewController不同。
为什么需要视图控制器?你想要完成什么?
顺便说一句,你可以使用NSLog而不是printf来节省一些按键:
NSLog(@"class: %@", [uiv class]);
答案 1 :(得分:2)
出于好奇,为什么你的视图控制器不能充当UITextViewDelegate?在我见过的大多数代码中(包括我自己的代码),视图控制器本身都倾向于充当代理。
如果需要将此功能提取到单独的类中,可能视图控制器可以将对自身的引用传递给UITextViewDelegate。