iOS:我可以从表视图注册textfieldDidBeginEditing吗



我遇到了一个复杂的问题,我正在解决越来越多的问题:-)我有一个嵌入的表视图。如果表格更改为编辑模式,并且屏幕底部的一些文本字段应该进行编辑,则它们将隐藏在键盘后面。

我现在已经对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];
}

但现在,如果用户编辑一个文本字段,然后跳到另一个文本域,我希望我的函数再次计算偏移量是否可以重置。但是,只有当键盘显示或隐藏时,才会触发这些通知。那么,如何注册文本字段开始编辑呢?当然,我有委托方法(我在各自的视图控制器中使用它们),但我看不出这两件事在哪里连接?我不能在表视图中为它们注册(好吧,它就是不起作用…),而且把表视图的所有代码都放在我的视图控制器中也没有意义。。。

您已经对UITableView进行了子类化,因此添加了一些视图控制器可以用来传递消息的更多方法。

// CustomTableView.h
@interface CustomTableView : UITableView
- (void) textFieldDidBeginEditing:(UITextField *)textField;

或者,您可以做一些看起来根本不像UITextFieldDelegate方法的事情:

- (void) updateOffsetsToShowRect:(CGRect)rect;

然后,在视图控制器的textFieldDidBeginEditing:实现中,可以在自定义表视图上调用这些方法。

最新更新