Sal*_*uts 1 iphone uinavigationcontroller uitouch iphone-sdk-3.0
简而言之,我想检测导航控制器标题栏上的触摸,但实际上却无法触及任何触摸!
如果这有所不同,一切都在没有IB的情况下完成.
我的app delegate的.m文件包含:
MyViewController *viewController = [[MyViewController alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:navigationController.view];
Run Code Online (Sandbox Code Playgroud)
此窗口中添加了一些其他子视图,其方式是覆盖navigationController,只留下导航栏可见.
MyViewController是UIViewController的子类,其.m文件包含:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
NSLog(@"ended\n");
}
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches) {
NSLog(@"began\n");
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将这些函数直接放入app delegate的.m文件中,但控制台仍为空白.
我究竟做错了什么?
好吧,由于缺乏更好的想法,我在我的应用程序中添加了另一个子视图,颜色清晰,以编程方式放置在导航栏标题上,并使用自定义类来覆盖相关的触摸方法.工作正常,但我仍然希望有一个更优雅的解决方案.
视图控制器将在其托管视图和超级视图之间插入响应程序链:
由于视图控制器与它们管理的视图紧密绑定,因此它们也是用于处理事件的响应程序链的一部分.视图控制器本身是UIResponder类的后代,并插入到托管视图及其超级视图之间的响应程序链中.因此,如果视图控制器管理的视图不处理事件,它会将事件传递给视图控制器,然后视图控制器可以选择处理事件或将事件转发到视图的超级视图.
您的控制器的托管视图是否正在吃掉所有事件?它是什么样的观点?
归档时间: |
|
查看次数: |
15543 次 |
最近记录: |