1

私のアプリのすべての UIViewController は、次のような UITextField デリゲートを使用しています。

- (void)textFieldDidBeginEditing:(UITextField*)textField {

    self.responder = textField;

}

- (BOOL)textFieldShouldReturn:(UITextField*)textField {

double elementYPosition = self.responder.frame.origin.y;
double elementHeight = self.responder.frame.size.height;
double scrollYPosition = self.scrollView.contentOffset.y;
/* some logic */

}

今、私は基本的なView Controllerを作成しようとしているので、メソッドを再利用して、それを継承して使用することができます。UITextField デリゲートがその値を設定するため、基本ビュー コントローラーのresponderプロパティは正常に機能しますが、スクロール ビューは IBOutlet であり、この基本クラスを設計する方法がよくわかりません。

#import "ViewControllerBase.h"

@interface ViewControllerBase ()

@property (weak, nonatomic) UIView* responder;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; /* ??? */

@end

@implementation ViewControllerBase

-- methods

@end
4

1 に答える 1

0

サブクラスのヘッダー:

@property (weak, nonatomic) UIScrollView *scrollView;

サブクラスの load メソッドで:

self.scrollView = (UIScrollView *)self.view.subviews[0];

ただし、ビュー コントローラーが常に次の形式になっているため、機能します。

UIViewController (self)
  UIView (self.view)
    UIScrollView (self.view.subviews[0])
      UILabel
      UIElement
    UIElement
    UIElement
于 2013-01-10T20:16:40.113 に答える