我想重用用於在用戶點擊屏幕上的任何位置時關閉文本字段的代碼。我試圖遵循單一責任原則,所以將這個功能放入超類並繼承它並不是一個好主意。辭職文本字段 - 代碼重用
這是我目前有:
TextFieldResigner.m:
@implementation TextFieldResigner
+ (void)autoDismissTextFieldsFromViewController:(UIViewController *)viewController {
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:viewController action:@selector(resignOnTap)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[viewController.view addGestureRecognizer:singleTap];
}
@end
我的視圖控制器類:
@interface EnrollQuestionsViewController()
@end
@implementation EnrollQuestionsViewController
- (void)viewDidLoad {
[super viewDidLoad];
[TextFieldResigner autoDismissTextFieldsFromViewController:self];
}
- (void)resignOnTap {
[_myTextField resignFirstResponder];
}
@end
這種解決方案只是不覺得它巧妙地組合在一起。試圖完成此任務的更正確的方法是什麼?
感謝您的提示。不幸的是,它看起來像becomeFirstResponder不強制resignFirstResponder。 – 2014-10-30 19:19:56
如果你已經期望類有'resignOnTap',那麼爲什麼不建立一個你所有其他視圖控制器派生自的'UIViewController'子類呢? – 2014-10-30 19:24:30
這可能是我應該做的。我已經擁有了一個UIViewController子類,它的所有視圖控制器派生自我,我只是擔心向其添加此功能可能會導致視圖控制器中不使用此功能的一些不可預見的問題。我很害怕打破子類應該想要所有基類功能的原則。 – 2014-10-30 19:26:50