触摸响应事件ios4

时间:2011-01-20 23:04:06

标签: iphone uiviewcontroller uinavigationcontroller touch first-responder

我在应用中添加了ViewController以支持广告横幅广告。该应用程序基于UINavigationController,因此我将ViewController作为子视图添加到UINavigationController。现在,广告横幅的区域无法识别何时触摸以在Safari中打开广告。我试图使ViewController成为FirstRirstResponder,但这不起作用。有没有人对如何修复有任何想法?

1 个答案:

答案 0 :(得分:0)

你说你把它添加为子视图,但我希望你的意思是你推了它

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

您的视图控制器可以响应事件,因为它是UIR应答器。 UIView以及UIButton,UISlider等大多数视觉控件也从UIResponder继承 - 但它们基于用户交互实现特定的操作。

如果你真的想拦截UIViewController中的事件,你需要处理touchesBegan / Moved / Ended事件。如果要显示要单击的内容,则更有可能在视图控制器中至少有UIWebView或UIImageView。

如果UIWebView需要实现UIWebViewDelegate

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

会告诉您正在打开的链接。

如果是UIImageView,您还需要在看到任何触摸事件之前设置属性userInteractionEnabled

如果您正在处理iAd的AdBannerView类,它也继承自UIView,因此适用于UIImageView的注释。然而,ADBannerViewDelegate是内置交互支持的必要条件 - 就像UIWebViewDelegate一样,您必须实现权限/通知功能,

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave