我遇到了问题。我有一个UIView,看起来像这样:alt text http://img193.imageshack.us/img193/6641/img0157y.png
在该视图控制器中,我实现了“touchesBegan:withEvent:”方法,但是当我触摸视图底部的栏时触发该方法,当我触摸桌子时没有任何反应。
如何更改此行为以便能够检测表中发生的触摸?
这是基本上声明UIViewController:
的代码#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
@interface TripSearchDetailViewController : UIViewController
{
//Parent of this sub-view.
UIViewController *parentController;
//GUI elements
UITableView *tableView;
UIButton *backButton;
}
//Button actions
- (IBAction) goBack:(id) sender;
- (IBAction) showDatePicker:(id) sender;
//Class Methods.
- (void) presentDatePicker;
@property (nonatomic, retain) UIViewController *parentController;
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) IBOutlet UIButton *backButton;
@end
答案 0 :(得分:2)
看起来你有一个UITableViewController,而不是UIViewController。您的表视图在进入视图控制器之前会拦截和处理触摸。您需要继承UITableView,覆盖它的-touchesBegan:withEvent:方法,然后创建一个标准的UIViewController,将您的新子类添加到视图层次结构中。
答案 1 :(得分:0)
我认为在TripSearchDetailViewController中实现hitTest:withEvent:方法可能会有所帮助。如果您在此方法中返回true,则应识别您的触摸。 另见:http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/EventHandling.html