我有一个复杂的问题,我正在解决越来越多的问题 :-) 我有一个嵌入式表格 View 。如果表格更改为编辑模式并且应编辑屏幕底部的某些文本字段,则它们隐藏在键盘后面。
我现在子类化了 UITableView 并让它与这些通知一起工作:
- (void)registerForKeyboardNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
但是现在,如果用户编辑一个文本字段然后跳转到另一个文本字段,我希望我的函数再次计算是否可以重置偏移量。但是,这些通知仅在键盘显示或隐藏时触发。那么我怎样才能注册一个文本字段开始编辑呢?当然我有委托(delegate)方法(我在各自的 View Controller 中使用它们),但我看不出这两个东西在哪里连接?我无法在 TableView 中为它们注册(好吧,它只是行不通..)并且将 TableView 的所有代码都放在我的 View Controller 中是没有意义的...
最佳答案
您已经对 UITableView
进行了子类化,因此添加一些您的 View Controller 可用于传递消息的方法。
// CustomTableView.h
@interface CustomTableView : UITableView
- (void) textFieldDidBeginEditing:(UITextField *)textField;
或者您可以做一些看起来完全不像 UITextFieldDelegate 方法的事情:
- (void) updateOffsetsToShowRect:(CGRect)rect;
然后在 View Controller 的 textFieldDidBeginEditing:
实现中,您可以在自定义 TableView 上调用这些方法。
关于iOS:我可以从表格 View 注册 textfieldDidBeginEditing 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406344/