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

时间:2013-12-05 17:11:50

标签: ios notifications

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

我现在是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];

}

但现在,如果用户编辑文本字段然后跳转到另一个文本字段,我希望我的函数再次计算是否可以重置偏移量。但是,这些通知仅在键盘显示或隐藏时触发。那么如何注册文本字段开始编辑?当然我有委托方法(我在相应的视图控制器中使用它们),但我不知道这两个东西连接在哪里?我无法在表视图中注册它们(它只是不起作用..)并且将我的所有代码都放在我的viewcontroller中的表视图中是没有意义的......

1 个答案:

答案 0 :(得分:1)

您已经将UITableView子类化了,因此请添加一些视图控制器可用于传递消息的方法。

// CustomTableView.h
@interface CustomTableView : UITableView

- (void) textFieldDidBeginEditing:(UITextField *)textField;

或者你可以做一些看起来不像UITextFieldDelegate方法的东西:

- (void) updateOffsetsToShowRect:(CGRect)rect;

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