0

J'ai ajouté un ViewController à une application pour la prise en charge des bannières publicitaires. L'application était basée sur un UINavigationController, j'ai donc ajouté ViewController en tant que sous-vue à UINavigationController. Maintenant, la zone de la bannière publicitaire ne reconnaît pas quand il est touché pour ouvrir l'annonce dans Safari. J'ai essayé de faire le ViewController devenir FirstResponder mais cela ne fonctionne pas. Est-ce que quelqu'un a des idées sur la façon de résoudre?événement de réponse tactile ios4

Répondre

0

vous dites que vous avez ajouté comme une sous-vue, mais j'espère que vous voulez dire que vous poussais avec

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

Votre contrôleur de vue peut répondre à des événements, car il est un UIResponder. UIView et donc la plupart des contrôles visuels comme UIButton, UISlider etc. héritent également de UIResponder - mais ils implémentent des actions spécifiques basées sur l'interaction de l'utilisateur.

Si vous voulez vraiment intercepter des événements dans un UIViewController, vous devrez gérer les événements touchesBegan/Moved/Ended. Plus probablement vous avez au moins un UIWebView ou un UIImageView dans le contrôleur de vue s'il affiche quelque chose sur lequel vous voulez cliquer.

Si UIWebView vous aurez besoin d'une UIWebViewDelegate mise en œuvre

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

vous permettra de savoir quels liens sont ouverts.

Si vous utilisez UIImageView, vous devez également définir la propriété userInteractionEnabled avant de voir des événements tactiles.

Si vous traitez avec la classe AdBannerView d'iAd, qui hérite de UIView, les commentaires pour UIImageView s'appliquent. CEPENDANT ADBannerViewDelegate est une exigence pour le support d'interaction intégré - tout comme UIWebViewDelegate, vous devez implémenter une fonction d'autorisation/notification,

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