1

所以我将 UIViewController 子类化,在 nib 中我有一个 UIView,其中有一个 tableview。据我了解,UIViewController 和 UIView 都是 UIResponder 的子类,因此它们应该接收 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 方法。

但是,情况并非如此,我的视图控制器子类没有接收到该方法。如果可以的话,我真的不想继承 UIView。

我正在尝试实现这一点,但我的

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [textfield resignFirstResponder];
}

没有被调用。

4

4 回答 4

5

这取决于您触摸的位置。如果您在表格视图中触摸,则触摸将发送到表格视图,而不是视图控制器。如果您触摸视图中的文本字段,则触摸将发送到 UITextField 本身。如果您在 tableview 之外、文本字段之外但在 viewcontrollers 的视图中触摸,则视图控制器应该得到这些触摸。

于 2010-09-01T22:29:36.347 回答
1

如果在 IB 中将 VC 的视图更改为 UIControl(UIControl 是 UIView 的超类),则可以为其分配 IBAction。您可以在该操作中让您的文本字段 resignFirstResponder 。

于 2010-09-01T22:28:07.550 回答
0

Unfortunately, touchesBegan only takes place in the view, despite UIViewController being a subclass of UIReponder. The docs for touchesBegan say this.

Tells the receiver when one or more fingers touch down in a view or window.

于 2010-09-01T22:15:50.220 回答
0

Is the UIView you are talking about is one you have created, or are you using the one furnished with the UIViewController ? Further more, if the click happen on the UITableView, you will have to subclass this to let your UIViewController know that a click occurred on the tableview...

于 2010-09-01T22:17:34.320 回答