我是iPhone开发人员的新手,
TouchCapturingWindow.h
@interface TouchCapturingWindow : UIWindow
{
NSMutableArray *views;
@private
UIView *touchView;
}
- (void)addViewForTouchPriority:(UIView*)view;
- (void)removeViewForTouchPriority:(UIView*)view;
@end
TouchCapturingWindow.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
DownloadPage.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");
}
我们将不胜感激。
答案 0 :(得分: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。