0

我是 iPhone 开发者的新手,

触摸捕捉窗口.h

@interface TouchCapturingWindow : UIWindow
{ 
       NSMutableArray *views;

       @private
       UIView *touchView;
}
- (void)addViewForTouchPriority:(UIView*)view;
- (void)removeViewForTouchPriority:(UIView*)view;
@end

触摸捕捉窗口.m

 (void)addViewForTouchPriority:(UIView*)view
 {
    if ( !views ) views = [[NSMutableArray alloc] init];
    [views addObject:view];
}
- (void)removeViewForTouchPriority:(UIView*)view 
{
    if ( !views ) return;
    [views removeObject:view];
}
- (void)sendEvent:(UIEvent *)event 
 {
    UITouch *touch = [[event allTouches] anyObject];
    if (touch.phase == UITouchPhaseBegan) 
    {
        for ( UIView *view in views ) 
        {
            if ( ![view isHidden] && [view pointInside:[touch locationInView:view] withEvent:event] ) 
            {
                touchView = view;
                [touchView touchesBegan:[event allTouches] withEvent:event];
                break;
            }
        }
    }
    else if (touch.phase == UITouchPhaseMoved) 
    {
        if ( touchView ) 
        {
            [touchView touchesMoved:[event allTouches] withEvent:event];
        }
    }
    else if (touch.phase == UITouchPhaseCancelled) 
    {
        if ( touchView ) 
        {
            [touchView touchesCancelled:[event allTouches] withEvent:event];
            touchView = nil;
        }
    }
    else if (touch.phase == UITouchPhaseEnded) 
    {
        if ( touchView ) 
        {
            [touchView touchesEnded:[event allTouches] withEvent:event];
            touchView = nil;
        }
    }
    [super sendEvent:event];
}
@end

下载页面.m

- (void)viewDidLoad
{
    [super viewDidLoad];   
    CGRect webFrame = CGRectMake(0.0, 0.0, 500.0, 500.0);
    webView = [[UIWebView alloc] initWithFrame:webFrame];
    [webView setBackgroundColor:[UIColor greenColor]];
    NSString *urlAddress = @"http://stackoverflow.com/";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
    [self.view addSubview:webView]; 
    NSString *t= [webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
    NSLog(@"selected text=%@",t);
}
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event 
 {
       NSLog(@"Touches began"); 
 }
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event      
 {
      NSLog(@"Touches moved"); 
 } 
- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event 
 { 
      NSLog(@"Touches ended"); 
 }
- (void) touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event 
 { 
      NSLog(@"Touches cancelled"); 
 }

任何帮助将不胜感激。

4

1 回答 1

0

这是一个古老的“问题”。

我这样做的方法是添加一个链接到您的 html 按钮或您希望的任何元素。

然后实现这个 UIWebView 委托方法(不要忘记在你的 h 文件中添加 UIWebViewDelegate)。当在 webview 中按下链接时会调用此方法,以便您可以根据自己的需要使用它:

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

    //Do what ever you want here


    //prevent the web View from loading the link
    return NO;

}

顺便说一句NSURL *url = request.URL; ,如果您有想要激活的链接,或者您有多个想要实施的操作,您可以使用它来检查 URL。

于 2012-07-20T07:29:21.310 回答