我的应用的每个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委托设置了它的值,但是scrollview是一个IBOutlet,我真的不确定如何设计这个基类:
#import "ViewControllerBase.h"
@interface ViewControllerBase ()
@property (weak, nonatomic) UIView* responder;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; /* ??? */
@end
@implementation ViewControllerBase
-- methods
@end
答案 0 :(得分: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