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

标签 ios notifications

我有一个复杂的问题,我正在解决越来越多的问题 :-) 我有一个嵌入式表格 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/

相关文章:

java - 为什么通知很慢?

ios - 随附的应用程序通知

ios - 当 playerviewcontroller 不再可用时,在哪里放置 registerForRemoteNotifications

ios - UIWebView 在文本字段焦点后滚动

ios - EAGLContexts 共享 EAGLSharegroup 在子类化 GLKView 时给出错误

ios - messageComposeViewController 消除崩溃 swift 3

ios - 请求用户允许在 iOS 8 中接收 UILocalNotifications

ios - 被admob广告单元ID中的 "/"和 ":"搞糊涂了

objective-c - 像输入一样对 NSMutableDictionary 的输出进行排序

javascript - 无法堆叠多个推送通知