2010-07-27 4 views
0

J'utilise UIWebView pour afficher un fichier pdf dans mon MainViewController. Sur un seul robinet, je veux charger une nouvelle vue à la MainViewController.comment reconnaître Single tap en utilisant UIWebView

Mais le UIWebView ne permet pas l'événement UITouch par défaut

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

} 

Comment résoudre ce problème?

Cordialement

Répondre

0

Idéalement webView userInteractionEnabled doit être réglé sur NO et au-dessus de la vue Web qui est le contrôleur de vue. Nous pouvons utiliser un TapGesture qui chargera une autre vue.

0

UIWebView est une sous-classe de UIScrollView. Vous pouvez utiliser touchesShouldBegin: withEvent: inContentView: méthode définie dans UIScrollView documentation.

Vous devez définir cette méthode dans votre UIWebView propre classe:

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view { 
// DO SOMETHING 
return NO;} 
0

@Pierre

Merci

je l'ai fait ce qui suit:

@implementation UIViewTouch 

. . . 

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 
{ 
    // DO SOMETHING 
    return NO; 
} 

Dans le contrôleur de vue mise en œuvre:

-(void)viewDidLoad 
{ 

    CGRect frame = CGRectMake(0, 0, 500, 1000);  
    UIViewTouch *viewTouch = [[UIViewTouch alloc]initWithFrame:frame]; 

    NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"page1" ofType:@"pdf"]; 
    NSURL *url = [NSURL fileURLWithPath:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [viewTouch loadRequest:requestObj]; [self.view addSubview:viewTouch]; 

} 
0

Créez une sous-classe UIView contenant l'entier UIWebView. Ensuite, l'événement hitTest sera déclenché en touchant le webview. Remarque: Ne placez rien dans le conteneur à l'exception de WebView.

@interface myWebViewContainer : UIView 
... ... 
@end 

outrepasser Puis l'événement hitTest:

-(UIView*) hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    NSLog(@"Hit test %@", [event description]); 
    UIView * returnView = [super hitTest:point withEvent:event]; 
    [delegate userDidTapWebView];// notify the delegate that UIWebView is being touched by some naughty user :P 


    return returnView; 
} 
Questions connexes