OC與JS的簡單的交互

現(xiàn)在iOS和html的混合開發(fā)是越來越普遍了困后,開發(fā)的效率也是大大的提高了鹉梨,但是頁面上的直接的交互也越來越重要了婴程。今天又朋友問我晋辆,自己就小研究了下渠脉。
1.OC與heml的交互現(xiàn)在還是使用UIWedView這個控件
1>OC中調(diào)用heml中的方法時使用到UIWedView的stringByEvaluatingJavaScriptFromString的方法

  // 利用JS獲得當前網(wǎng)頁的標題
   [self.wedview stringByEvaluatingJavaScriptFromString:@"document.title;"];

2>網(wǎng)頁上的操作讓OC界面發(fā)生的變化我們需要用到UIWedView的代理的方法

/*  攔截wedview的請求
 *
 *  @param request        請求
 *
 *  @return 返回yes時可以發(fā)送請求  返回NO就是不可以
 */ 
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

下面來介紹下怎么實現(xiàn)的(在storybord拖控件設(shè)置大小,托線就不介紹了)
1.我們應(yīng)該知道加載的那個網(wǎng)頁是吧瓶佳,我自己寫了個本地的網(wǎng)頁作為測試
// 加載網(wǎng)頁 本地網(wǎng)頁
[self.wedview loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"]]];
// 設(shè)置代理
self.wedview.delegate = self;

2.實現(xiàn)代理

warning 注意系統(tǒng)的方法只能多穿兩個方法

  /**
   *  攔截wedview的請求
  *
  *  @param request        請求
  *
  *  @return 返回yes時可以發(fā)送請求  返回NO就是不可以
 */
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    // 獲取點擊按鈕上要獲取的發(fā)送的請求
    NSString *URLString =[request.URL absoluteString];
      // 判斷發(fā)送的請求是否包含下列特定的字符(應(yīng)為要用到交互芋膘,所以不是個正確的連接,這個和寫JS的約定好)
      NSString *scheme = @"xmg://";
     if ([URLString containsString:scheme]) {
    // schem 后面的方法名字和參數(shù)截取下來
    NSString *path =[URLString substringFromIndex:scheme.length];
    // 將方法名字和參數(shù)利用特定的符號截取開來 這個用的是@“霸饲?“
    NSArray *array =[path componentsSeparatedByString:@"?"];
    // 獲取到方法名字
    NSString *methodName = [array firstObject];
    // 將方法名中的_特殊符號用OC語法中的:替換掉为朋,形成方法名
    NSString *newmethodName = [methodName stringByReplacingOccurrencesOfString:@"_" withString:@":"];
    // 獲取參數(shù)
    NSArray *params = nil;
    // 判斷下js發(fā)送的請求里面是否為有參數(shù)
    if (array.count == 2) {
        // 也是利用特殊的符號截取到參數(shù)的數(shù)組
        params = [[array lastObject] componentsSeparatedByString:@"&"];
    }
    // 判斷是否有第二個參數(shù)
    NSString *twoString = params.count<=1?nil:[params lastObject];
      #warning 注意系統(tǒng)的方法只能多穿兩個方法 ,我也查詢了別人穿多個參數(shù)的方法厚脉,寫了方法习寸,后續(xù)上傳
    // 調(diào)用方法
    [self performSelector:NSSelectorFromString(newmethodName) withObject:[params firstObject] withObject:twoString];
       #warning 注意 一定記得返回NO 不然就UIWedView就跳轉(zhuǎn)頁面了
    return NO;
       }
      return YES;
      }

3.注意 一定要在控制器中實現(xiàn)你要調(diào)用的方法,不然真的會崩潰的傻工。
- (void)sendMessage:(NSString *)number number2:(NSString *)number2{
NSLog(@" %@ %@ ", number, number2);
}
這個為自己寫的網(wǎng)頁內(nèi)容

3314D8C6-8CEB-42B6-88D0-8BC859754478.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末霞溪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子精钮,更是在濱河造成了極大的恐慌威鹿,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轨香,死亡現(xiàn)場離奇詭異忽你,居然都是意外死亡,警方通過查閱死者的電腦和手機臂容,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門科雳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脓杉,你說我怎么就攤上這事糟秘。” “怎么了球散?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵尿赚,是天一觀的道長。 經(jīng)常有香客問我,道長凌净,這世上最難降的妖魔是什么悲龟? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮冰寻,結(jié)果婚禮上须教,老公的妹妹穿的比我還像新娘。我一直安慰自己斩芭,他們只是感情好轻腺,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著划乖,像睡著了一般贬养。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琴庵,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天煤蚌,我揣著相機與錄音,去河邊找鬼细卧。 笑死,一個胖子當著我的面吹牛筒占,可吹牛的內(nèi)容都是我干的贪庙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翰苫,長吁一口氣:“原來是場噩夢啊……” “哼止邮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奏窑,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤导披,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后埃唯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撩匕,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年墨叛,在試婚紗的時候發(fā)現(xiàn)自己被綠了止毕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漠趁,死狀恐怖扁凛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闯传,我是刑警寧澤谨朝,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響字币,放射性物質(zhì)發(fā)生泄漏则披。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一纬朝、第九天 我趴在偏房一處隱蔽的房頂上張望收叶。 院中可真熱鬧,春花似錦共苛、人聲如沸判没。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澄峰。三九已至,卻和暖如春辟犀,著一層夾襖步出監(jiān)牢的瞬間俏竞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工堂竟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魂毁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓出嘹,卻偏偏與公主長得像席楚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子税稼,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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

  • OC調(diào)用JS 首先我們創(chuàng)建一個WebView,加載一個本地的HTML文件 在webview加載完成時-(void)...
    45b645c5912e閱讀 1,110評論 2 5
  • 隨著H5技術(shù)的興起烦秩,在iOS開發(fā)過程中,難免會遇到原生應(yīng)用需要和H5頁面交互的問題郎仆。其中會涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,068評論 1 8
  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會牽扯到網(wǎng)絡(luò)開發(fā)只祠,例如說新浪微博、微信等扰肌,這些應(yīng)用本身可...
    lichengjin閱讀 3,661評論 2 7
  • Web與 OC交互總結(jié)1,原生方法,通過url傳值web代碼: function loadURL(url) {va...
    兵兵哥哥閱讀 1,061評論 0 0
  • 前言 在iOS開發(fā)過程中抛寝,一般會有遇到需要和UIWebView交互的需求,即native端和網(wǎng)頁端的數(shù)據(jù)交互狡耻,因為...
    wuwy閱讀 913評論 0 2