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 */

}

现在我正在尝试创建一个基本视图控制器,所以我可以继承使用它,重用这些方法。基本视图控制器中的responder属性工作得很好,因为 UITextField 委托设置了它的值,但是滚动视图是一个 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;

在子类加载方法中:

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 回答