注册 登录
主题 : UIWebView响应Touch事件的方法(不用Private API, iOS4 Tested)
级别: 管理员

状态: 连续签到 - [3天]
UID: 2
精华: 9
发帖: 7689
可可豆: 73323 CB
威望: 73449 点
在线时间: 5514(时)
注册时间: 2008-03-29
最后登录: 2018-04-05
0 楼:  发表于: 2010-06-29 01:22    发自: Web Page
来源于 iPhone类代码 分类

UIWebView响应Touch事件的方法(不用Private API, iOS4 Tested)    (在iOS代码库中浏览本帖)

UIWebView响应不了Touch事件,很久以前就很难解决。最后有一个叫做UICWebView的东西,虽然用了private api,但是可以用。不过----UICWebView或者任何用UIWebDocumentView获得事件的方法在iOS4 100%会出错(因为UIWebDocumentView这个东西没了)。用下面的方法可以让UIWebView响应Touch事件,而且不会影响滚动拖拽的bouncing。

如果需要touch的个数或者坐标,也很简单,不过需要自己修改代码里的JavaScript。


- (void)viewDidLoad {
    [super viewDidLoad];
    self.webView.delegate=self;
    NSString *resourcePath = [ [NSBundle mainBundle] resourcePath];
    NSString *filePath = [resourcePath stringByAppendingPathComponent:@"test.html"];
    NSString *htmlstring=[[NSString alloc] initWithContentsOfFile:filePath  encoding:NSUTF8StringEncoding error:nil];  
    NSString *newHTMLString=[htmlstring stringByAppendingString:@""];
    [self.webView loadHTMLString:newHTMLString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
    [htmlstring release];
}
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *requestString = [[request URL] absoluteString];
    NSArray *components = [requestString componentsSeparatedByString:@":"];
    if ([components count] > 1 && [(NSString *)[components objectAtIndex:0] isEqualToString:@"myweb"]) {
        if([(NSString *)[components objectAtIndex:1] isEqualToString:@"touch"]) 
        {
            NSLog(@"%@",[components objectAtIndex:2]);
        }
        return NO;
    }
    return YES;
}

In all thy ways acknowledge Him, and He shall direct thy paths.
级别: 版主

状态: 连续签到 - [144天]
UID: 491
精华: 6
发帖: 1766
可可豆: 112205 CB
威望: 112852 点
在线时间: 8537(时)
注册时间: 2008-08-19
最后登录: 2019-02-28
1 楼:  发表于: 2010-06-29 01:29    发自: Web Page
引用
引用楼主gagaga于2010-06-29 01:22发表的 UIWebView响应Touch事件的方法(不用Private API, iOS4 Tested) :
UIWebView响应不了Touch事件,很久以前就很难解决。最后有一个叫做UICWebView的东西,虽然用了private api,但是可以用。不过----UICWebView或者任何用UIWebDocumentView获得事件的方法在iOS4 100%会出错(因为UIWebDocumentView这个东西没了)。用下面的方法可以让UIWebView响应Touch事件,而且不会影响滚动拖拽的bouncing。

如果需要touch的个数或者坐标,也很简单,不过需要自己修改代码里的JavaScript。

[lang=objc]
.......



山口山,王道啊!!
 Developer
------------------------------------------------------------
Η αγάπη ποτέ δεν αποτυγχάνει.
愛是永不止息。
Love never fails.

    --《圣经.新约》哥林多前书第13章
级别: 管理员

状态: 连续签到 - [3天]
UID: 2
精华: 9
发帖: 7689
可可豆: 73323 CB
威望: 73449 点
在线时间: 5514(时)
注册时间: 2008-03-29
最后登录: 2018-04-05
2 楼:  发表于: 2010-06-29 01:30    发自: Web Page
引用
引用第1楼lvyile于2010-06-29 01:29发表的  :



山口山,王道啊!!


其实这个办法早应该想到的。走弯路了。
In all thy ways acknowledge Him, and He shall direct thy paths.
级别: 精灵王

UID: 14252
精华: 0
发帖: 607
可可豆: 6070 CB
威望: 6070 点
在线时间: 3893(时)
注册时间: 2010-02-20
最后登录: 2016-04-01
3 楼:  发表于: 2010-06-29 02:43    发自: Web Page
学习一下,gagaga辛苦了

加QQ:3986176联系哦
接外包,不限地区
级别: 侠客

UID: 16620
精华: 0
发帖: 110
可可豆: 1060 CB
威望: 1055 点
在线时间: 592(时)
注册时间: 2010-04-01
最后登录: 2014-12-17
4 楼:  发表于: 2010-06-29 09:38    发自: Web Page
ga大威武,UIWebDocumentView确实没有了,难怪sendevent没用了
ぷ▂▃▅▆█
啤酒花生八宝粥,瓜子饮料矿泉水。让一让啊!让一让!
级别: 风云使者

UID: 14178
精华: 5
发帖: 3049
可可豆: 29678 CB
威望: 29678 点
在线时间: 3077(时)
注册时间: 2010-02-17
最后登录: 2019-02-19
5 楼:  发表于: 2010-06-29 11:14    发自: Web Page
引用
引用楼主gagaga于2010-06-29 01:22发表的 UIWebView响应Touch事件的方法(不用Private API, iOS4 Tested) :
UIWebView响应不了Touch事件,很久以前就很难解决。最后有一个叫做UICWebView的东西,虽然用了private api,但是可以用。不过----UICWebView或者任何用UIWebDocumentView获得事件的方法在iOS4 100%会出错(因为UIWebDocumentView这个东西没了)。用下面的方法可以让UIWebView响应Touch事件,而且不会影响滚动拖拽的bouncing。

如果需要touch的个数或者坐标,也很简单,不过需要自己修改代码里的JavaScript。

[lang=objc]
.......



拦截UIWindow - -b的touch事件,不知道 iOS4情况如何


ga大 用js的这个方法能 响应swipe不?
stay foolish,stay hungry
做个二货,做个吃货
级别: 新手上路
UID: 6871
精华: 0
发帖: 1
可可豆: 494 CB
威望: 494 点
在线时间: 338(时)
注册时间: 2009-07-07
最后登录: 2018-09-06
6 楼:  发表于: 2010-07-02 13:20    发自: Web Page
怎么获取 touhces的坐标 呢?用clientX?
级别: 骑士
UID: 15392
精华: 0
发帖: 248
可可豆: 2462 CB
威望: 2462 点
在线时间: 243(时)
注册时间: 2010-03-13
最后登录: 2014-11-20
7 楼:  发表于: 2010-07-28 09:42    发自: Web Page
继承UIWebView重载touchXXX也不行
级别: 精灵王
UID: 16362
精华: 0
发帖: 528
可可豆: 5262 CB
威望: 5262 点
在线时间: 1062(时)
注册时间: 2010-03-29
最后登录: 2016-01-15
8 楼:  发表于: 2010-07-29 11:55    发自: Web Page
备用以后!
级别: 新手上路
UID: 25632
精华: 0
发帖: 6
可可豆: 60 CB
威望: 60 点
在线时间: 20(时)
注册时间: 2010-07-24
最后登录: 2014-10-22
9 楼:  发表于: 2010-08-05 02:13    发自: Web Page
引用
引用楼主gagaga于2010-06-29 01:22发表的 UIWebView响应Touch事件的方法(不用Private API, iOS4 Tested) :
UIWebView响应不了Touch事件,很久以前就很难解决。最后有一个叫做UICWebView的东西,虽然用了private api,但是可以用。不过----UICWebView或者任何用UIWebDocumentView获得事件的方法在iOS4 100%会出错(因为UIWebDocumentView这个东西没了)。用下面的方法可以让UIWebView响应Touch事件,而且不会影响滚动拖拽的bouncing。

如果需要touch的个数或者坐标,也很简单,不过需要自己修改代码里的JavaScript。

[lang=objc]
.......




gagaga大大,如果我想能达到左右翻页的效果,我应该怎么修改javascript?希望大大指教。谢谢

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部