ios 開發(fā)---h5與OC的交互

如何實現(xiàn)點擊h5 上的圖片铺呵,實現(xiàn)參數(shù)傳遞給OC ?

我相信稍味,許多人在開發(fā)中都會遇到這種情況,有的是遇到了OC 調(diào)用js灶似,有的則是遇到了js調(diào)用OC列林,這種需求如今已經(jīng)屢見不鮮,畢竟在某些情況下h5實現(xiàn)起來更加簡便酪惭,好了不多說了希痴,我在這里就簡簡單單的和大家舉個js傳值給OC的例子吧。

h5中有如下代碼:

如果我們要實現(xiàn)點擊h5上的圖片春感,然后將圖片所包含信息傳給OC砌创,我們該怎么做呢?首先鲫懒,作為iOS 端嫩实,我們需要和h5端,商量傳值的函數(shù)名(當然我這都是本地的h5窥岩,所以名稱呢就不用去找h5商量了)甲献,記住函數(shù)名要一致,不能出錯谦秧,否則的話竟纳,就沒有效果嘍,下面就是我們的例子了疚鲤,首先是h5的實現(xiàn)方式锥累,畢竟是從h5傳給iOS 嘛

1.iOS 與h5商定好函數(shù)名,本例函數(shù)名已定:clickOnAndroid,h5端寫法:
 <a onclick="clickOnAndroid(1,2001,'平山森林公園')">
<img  src="images/lh2001.jpg" /></a><br><span>平山森林公園</span>

說完了h5的實現(xiàn)方式集歇,那么iOS端該怎么接受呢桶略,此處,我們就在-(void)webViewDidFinishLoad:(UIWebView *)webView 函數(shù)中來接收,當然這是看情況的际歼,并不是每一個都在這里接收的惶翻,此處不做詳細說明。我們首先需要引入#import <JavaScriptCore/JavaScriptCore.h>頭文件鹅心,使用系統(tǒng)的JSContext 獲取傳遞過來的參數(shù)

各種數(shù)據(jù)類型可以轉(zhuǎn)換吕粗,Objective-C的Block也可以傳入JSContext中當做JavaScript的方法使用。以下旭愧,是我通過JSContext 獲取參數(shù)的具體內(nèi)容颅筋,大家主要看這一部分就行

   __block NSArray *args;
    JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    //定義好JS要調(diào)用的方法
    context[@"clickOnAndroid"] = ^() {
         webflag = YES;
         args = [JSContext currentArguments];
        dispatch_async(dispatch_get_main_queue(), ^{
            
            JSValue *jsVal = args.lastObject;
            JSValue *jsVal1 = args[args.count-2];
            NSString *Id = jsVal1.toString;})

以下是我的一些需求,當然可能大家也會遇到類似的需求输枯,這里就也分享出來议泵,大家共享一下吧
2.OC 實現(xiàn)方式如下:

-(void)webViewDidFinishLoad:(UIWebView *)webView{
    
   __block NSArray *args;
    JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    //定義好JS要調(diào)用的方法
    context[@"clickOnAndroid"] = ^() {
         webflag = YES;
         args = [JSContext currentArguments];
        dispatch_async(dispatch_get_main_queue(), ^{
            
            JSValue *jsVal = args.lastObject;
            JSValue *jsVal1 = args[args.count-2];
            NSString *Id = jsVal1.toString;
            
            //以下為打開本地h5并傳參的方式:
            NSString *htmlstring = [[NSBundle mainBundle] pathForResource:@"kq_scenic" ofType:@"html" inDirectory:@"assets"];
            NSString *htmS = [htmlstring stringByAppendingString:[NSString stringWithFormat:@"?areaId=%@",Id]];
            NSLog(@"-------%@",Id);
           
 //此處的url必須加上file:// (本地h5),否則無效果
            NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@",[htmS stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
            
            NSURLRequest * request = [NSURLRequest requestWithURL:url];
            NSLog(@"%@",request);
            [self.webView loadRequest:request];
 

            
        });
        
        
    };
    }
    //關閉網(wǎng)頁復制粘貼功能
    [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
    // Disable callout
    [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
    
}


最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桃熄,一起剝皮案震驚了整個濱河市先口,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞳收,老刑警劉巖碉京,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缎讼,居然都是意外死亡收夸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門血崭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卧惜,“玉大人,你說我怎么就攤上這事夹纫⊙蚀桑” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵舰讹,是天一觀的道長茅姜。 經(jīng)常有香客問我,道長月匣,這世上最難降的妖魔是什么钻洒? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮锄开,結果婚禮上素标,老公的妹妹穿的比我還像新娘。我一直安慰自己萍悴,他們只是感情好头遭,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布寓免。 她就那樣靜靜地躺著,像睡著了一般计维。 火紅的嫁衣襯著肌膚如雪袜香。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天鲫惶,我揣著相機與錄音蜈首,去河邊找鬼。 笑死剑按,一個胖子當著我的面吹牛疾就,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播艺蝴,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸟废!你這毒婦竟也來了猜敢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤盒延,失蹤者是張志新(化名)和其女友劉穎缩擂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體添寺,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胯盯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了计露。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片博脑。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖票罐,靈堂內(nèi)的尸體忽然破棺而出叉趣,到底是詐尸還是另有隱情,我是刑警寧澤该押,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布疗杉,位于F島的核電站,受9級特大地震影響蚕礼,放射性物質(zhì)發(fā)生泄漏烟具。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一奠蹬、第九天 我趴在偏房一處隱蔽的房頂上張望朝聋。 院中可真熱鬧,春花似錦罩润、人聲如沸玖翅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽金度。三九已至应媚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猜极,已是汗流浹背中姜。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跟伏,地道東北人丢胚。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像受扳,于是被迫代替她去往敵國和親携龟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容