所以我将UIViewController子类化,在nib中我有一个UIView,并在其中有一个tableview。我的理解是UIViewController和UIView都是UIResponder的子类,所以他们应该接收 - (void)touchesBegan:(NSSet *)触及withEvent:(UIEvent *)事件 方法
但是,情况并非如此,我的视图控制器子类没有接收到该方法。我真的不喜欢UIView的子类,如果那没关系。
我正在尝试实施this,但我的
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[textfield resignFirstResponder];
}
没有被召唤。
答案 0 :(得分:5)
取决于您触摸的位置。如果您在表格视图中触摸,则会将触摸发送到tableview,而不是视图控制器。如果触摸视图中的文本字段,则会将触摸发送到UITextField本身。如果你触摸了tableview之外的文本区域之外,但是在viewcontrollers的视图中,那么视图控制器应该进行那些触摸。
答案 1 :(得分:1)
如果在IB中将VC的视图更改为UIControl(UIControl是UIView的超类),则可以为其分配IBAction。您可以在该操作中使用textfield resignFirstResponder。
答案 2 :(得分:0)
不幸的是,尽管UIViewController是UIReponder的子类,但touchesBegan只发生在视图中。 touchesBegan的文档说明了这一点。
当一个或多个手指在视图或窗口中触及时告诉接收者。
答案 3 :(得分:0)
您正在谈论的UIView是您创建的,或者您使用的是UIViewController配备的那个? 此外,如果点击发生在UITableView上,你必须将其子类化,让你的UIViewController知道桌面视图上发生了点击......