我有一个静态UITableView
,其中包含许多UITextField
个。当用户点击我想要的任何文本字段之外时,我想要关闭键盘。
我UIViewController
的顶层是UITableView
和UITabBarItem
。我相信我还必须处理状态栏上的点击。
我不确定应该如何注册触摸它们(这样我就可以强制任何文本字段调用resignFirstResponder
。
我以为我可能要处理UIResponder
的
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
表格视图和标签栏项目,但它们都不是UIControl
s所以我无法使用
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
UIWindow
也是UIResponder
,但我再也无法获得触摸事件。
非常感谢任何帮助, CS
答案 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
,然后添加一个报告触摸事件的委托。