0

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

4

1 回答 1

0

你说你将它添加为子视图,但我希望你的意思是你用

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

您的视图控制器可以响应事件,因为它是一个 UIResponder。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
于 2011-01-20T23:26:16.940 回答