UITextField:在其外部轻击时强制使用resignFirstResponder

时间:2012-11-19 14:30:05

标签: ios uitextfield uitabbaritem resignfirstresponder

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

UIViewController的顶层是UITableViewUITabBarItem。我相信我还必须处理状态栏上的点击。

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

我以为我可能要处理UIResponder

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

表格视图和标签栏项目,但它们都不是UIControl s所以我无法使用

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

UIWindow也是UIResponder,但我再也无法获得触摸事件。

非常感谢任何帮助, CS

2 个答案:

答案 0 :(得分: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检查每个文本字段。

答案 1 :(得分:0)

如果您有静态UITableView,它会“触摸”触摸事件。所以我做的是通过继承UITableView,然后添加一个报告触摸事件的委托。