天天躁狠狠躁狠狠躁夜夜躁

      <track id="fedzv"></track>
      1. <optgroup id="fedzv"><dd id="fedzv"></dd></optgroup>
          1. <p id="fedzv"><strong id="fedzv"><small id="fedzv"></small></strong></p>


            IT開發/UI設計/運營/影視特效培訓機構

            400-111-8989

            熱門課程

            iPad開發:在UIWebView中自定義菜單欄

            • 發布:IT培訓
            • 來源:IT學習資料
            • 時間:2018-06-29 17:27

            先聲明一下,下面用到的方法是本人已經過實際運行達到預期效果后的總結,諸位在參考時可少走一些彎路,放心嘗試。

            我們所要達到的預期效果是,用UIWebView加載網頁,長按某單詞后彈出我們自定義的菜單欄,不顯示系統本身自帶的,點擊某一菜單進行對應的處理。

            首先,先自定義需要的菜單欄

            [cpp]

            UIMenuController *menuController = [UIMenuController sharedMenuController];

            UIMenuItem *menuItemCiYi = [[UIMenuItem alloc] initWithTitle:@"看詞義" action:@selector(ciYi:)];

            UIMenuItem *menuItemSound = [[UIMenuItem alloc] initWithTitle:@"聽發音" action:@selector(listeningSound:)];

            UIMenuItem *menuItemShengCi = [[UIMenuItem alloc] initWithTitle:@"加入生詞本" action:@selector(addWord:)];

            NSArray *mArray = [NSArray arrayWithObjects:menuItemCiYi,menuItemSound,menuItemShengCi, nil];

            [menuItemCiYi release];

            [menuItemSound release];

            [menuItemShengCi release];

            [menuController setMenuItems:mArray];

            可以看出,每個菜單對應的操作方法名,至于這段代碼寫在什么位置,稍后再說,這也是需要額外注意的地方。

            自定義一個繼承UIWebView的控件CustomWebView,手動處理某一菜單對應的操作

            在CustomWebView.m中

            [cpp]

            //

            // CustomWebView.m

            // LrcWebViewTest

            //

            // Created by Andy on 12-6-20.

            // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.

            //

            #import "CustomWebView.h"

            @implementation CustomWebView

            - (id)initWithFrame:(CGRect)frame

            {

            self = [super initWithFrame:frame];

            if (self) {

            // Initialization code

            }

            return self;

            }

            -(void)awakeFromNib{

            }

            -(BOOL)canPerformAction:(SEL)action withSender:(id)sender{

            if(action == @selector(ciYi:) || action == @selector(listeningSound:) ||action == @selector(addWord:)){

            return YES;

            }

            return NO;

            }

            -(IBAction)ciYi:(id)sender;{

            NSLog(@"ciYi");

            }

            -(IBAction)listeningSound:(id)sender{

            NSLog(@"listeningSound");

            }

            -(IBAction)addWord:(id)sender{

            NSLog(@"addWord");

            }

            /*

            // Only override drawRect: if you perform custom drawing.

            // An empty implementation adversely affects performance during animation.

            - (void)drawRect:(CGRect)rect

            {

            // Drawing code

            }

            */

            @end

            通過重寫-(BOOL)canPerformAction:(SEL)action withSender:(id)sender函數,告知菜單欄哪些菜單可以顯示。

            然后就是討論這個自定義的菜單欄,應該寫在什么位置。www.2cto.com

            之前是寫在CustomWebView.m的initWithFrame方法中,但是長按后菜單欄一直沒有出來,后來發現,如果是通過xib添加此控件的話,通過斷點跟蹤就可發現,它是不會執行initWithFrame方法的,所以那段代碼應該寫在-(void)awakeFromNib方法中,如果是通過代碼添加的,就應該寫在initWithFrame方法中,否則不執行添加菜單的操作。

            還有一點是,剛剛在嘗試過程中發現,如果將添加菜單欄的代碼寫在添加UIWebView控件界面的ViewDidLoad中也可以達到對應的效果,也許你會問,這樣做的話是改變了那個界面的菜單欄,會不會那個界面中彈出的菜單欄都是同一個樣子?答案是不會的,因為通過重寫

            -(BOOL)canPerformAction:(SEL)action withSender:(id)sender這個方法可以篩選出需要的菜單項,而自定義的WebView中已經重寫了這個方法,所以在webview中彈出的菜單是需要的菜單項,在其他控件中例如TextField控件,彈出的依舊會是系統默認的菜單項,只是出于程序可讀性,可維護性考慮,最好在自定義的控件中修改菜單性,單獨封裝起來。

            預約申請免費試聽課

            填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

            上一篇:iPhone/iPad開發之:掃盲貼
            下一篇:iPhone應用中APNS推送通知流程代碼

            達內it學習路線?如何學好it?

            學編程需要什么基礎嗎?

            Python、Java、C++該學哪一個

            學編程需要什么基礎嗎

            • 掃碼領取資料

              回復關鍵字:視頻資料

              免費領取 達內課程視頻學習資料

            • 視頻學習QQ群

              添加QQ群:1143617948

              免費領取達內課程視頻學習資料

            Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

            選擇城市和中心
            江西省

            貴州省

            廣西省

            海南省

            天天躁狠狠躁狠狠躁夜夜躁 亚洲AV无码专区亚洲猫咪,猫咪WWW免费人成网站,色猫咪免费人成网站在线观看| 精品无码国模私拍视频,国模无码视频一区二区三区,国模和精品嫩模私拍视频| 亚洲精品一本之道高清乱码,一本大道无码日韩精品影视_,一本色道久久综合亚洲精品