2

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( "クラス: %s\n", [[[uiv クラス] 説明] UTF8String] ) ;
4

2 に答える 2

4

これを行う方法はありません。UIViewController は、それが管理する UIView を認識していますが、ビューにはそのビュー コントローラーへの参照がありません (また、ビュー コントローラーさえない場合もあります)。

-superview メソッドは別の UIView を返しますが、これは UIViewController とは異なります。

なぜView Controllerが必要なのですか?何を達成しようとしていますか?

余談ですが、printf の代わりに NSLog を使用すると、いくつかのキーストロークを節約できます。

NSLog(@"class: %@", [uiv class]); 
于 2009-11-24T06:05:41.853 に答える
2

好奇心から、View Controller が UITextViewDelegate として機能しないのはなぜですか? 私が見たほとんどのコード (私自身のものを含む) では、View Controller 自体がデリゲートとして機能する傾向があります。

この機能を別のクラスに抽出する必要がある場合、おそらくビュー コントローラーはそれ自体への参照を UITextViewDelegate に渡すことができます。

于 2009-11-24T06:45:58.573 に答える