0

我有一个UITableView包含许多UITextFields 的静态变量。当用户在我想要的任何文本字段之外点击时,我想关闭键盘。

在 my 的顶层UIViewController是 aUITableView和 a UITabBarItem。我相信我还必须处理状态栏上的点击。

我不确定我应该如何注册触摸它们(这样我就可以强制任何文本字段调用resignFirstResponder.

UIResponder我想我可能不得不处理

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

对于表格视图和标签栏项目,但它们都不是UIControls 所以我不能使用

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

UIWindow也是一个UIResponder但同样,我似乎无法获得触摸事件。

任何帮助将不胜感激,CS

4

2 回答 2

0

如果你有一个文本字段,我会在它所属的 UIViewController 中添加触摸开始并像这样......

- (void)touchesBegan ... cant remember full name
{
    if ([touches count] > 1) {
        return;
    }

    UITouch *touch = [touches anyObject];

    CGPoint touchPoint = [touch locationInView self.view];

    if (!CGRectContainsPoint(self.textField.frame, touchPoint)) {
        //touch originated outside textField.

        [textField resignFirstResponder];
    }
}

如果您有多个文本字段,那么只需对 if 中的每个字段进行 CGRectContainsPoint 检查。

于 2012-11-19T15:47:18.720 回答
0

当你有一个静态UITableView时,它会“吃掉”触摸事件。所以我所做的是通过子类化UITableView,然后添加一个报告触摸事件的委托。

于 2012-11-23T17:50:13.007 回答