3

我有UITableView两个自定义单元格,每个单元格都有一个子视图,UITextField里面有一个。我尝试UIButton在顶部添加一个UITableView并拥有它,resignFirstResponder但这仅意味着您将无法点击其他任何地方 - 甚至UITextFields无法输入文本。

如果我在这两个之外点击,我该如何做到这UITextFields一点,我可以调用 resignFirstResponder,以便用户可以返回其他单元格?

谢谢

4

3 回答 3

2

一个很好的简单方法是继承 UITableView 并实现触摸方法(不要忘记之后将它们传递给超级!)。从那里您可以检查触摸开始并确定它是否是 UITextField 内部的触摸(使用 UIView 中的 hitTest: 方法)。如果 hitTest 没有返回 UITextField,您可以调用控制器中的方法来让第一响应者辞职。希望这会为您指明正确的方向!

于 2009-12-19T12:11:28.490 回答
1

我问了一个类似的问题,并自己找到了我发布的答案。基本上,您可以在自定义 UITableViewCell 中覆盖 hitTest:withEvent: ,它可以让您检测何时在您的单元格或表格视图中的任何其他单元格中发生触摸。我提供了一个示例 hitTest: 方法,它复制了原始 hitTest: 的功能,你可以添加你需要的东西。您可以像我一样在 hitTest 函数中添加您的 resignFirstResponder 或进一步自定义它。

于 2010-03-16T18:17:21.190 回答
-2

与其尝试在该字段之外点击以辞职第一响应者,不如在键盘显示时使用 -setFrame 调整您的表格视图的大小,使其位于键盘上方的可见区域。然后您就可以将视图滚动到其他单元格。您可以通过注册这样的事件来通知您键盘是可见的:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

然后实现keyboardWillShow:

- (void)keyboardWillShow:(NSNotification*)notification;
{
    [tableView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 200.0f)];
}

最好的祝福。

于 2009-10-20T05:06:40.903 回答