Сенсорный ответ ios4
Я добавил ViewController в приложение для поддержки рекламных баннеров. Приложение было основано на UINavigationController, поэтому я добавил ViewController в качестве подпредставления для UINavigationController. Теперь область рекламного баннера не распознается при касании, чтобы открыть объявление в сафари. Я пытался заставить ViewController стать FirstResponder, но это не работает. У кого-нибудь есть мысли как починить?
1 ответ
Вы говорите, что добавили его в качестве подпредставления, но я надеюсь, что вы имеете в виду, что вы добавили его
- (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
прежде чем вы увидите какие-либо сенсорные события.
Если вы имеете дело с классом AdBannerView в iAd, который также наследует от UIView, то применяются комментарии для UIImageView. ОДНАКО ADBannerViewDelegate является требованием для встроенной поддержки взаимодействия - так же, как UIWebViewDelegate, вы должны реализовать функцию разрешения / уведомления,
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave