UIWebView自定義選單欄
主要程式碼
CustomWebView.h
@interface CustomWebView : UIWebView
@end
CustomWebView.m
#import "CustomWebView.h"
@implementation CustomWebView
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// 全程式碼時入口
[self addMenu];
}
return self;
}
-(void)awakeFromNib
{
[super awakeFromNib];
// xib時入口
[self addMenu];
}
- (void)addMenu
{
UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *menuItemCopy = [[UIMenuItem alloc] initWithTitle:@"複製" action:@selector(copyT:)];
UIMenuItem *menuItemNote = [[UIMenuItem alloc] initWithTitle:@"筆記" action:@selector(noteT:)];
UIMenuItem *menuItemSearch = [[UIMenuItem alloc] initWithTitle:@"搜尋" action:@selector(searchT:)];
UIMenuItem *menuItemShare = [[UIMenuItem alloc] initWithTitle:@"分享" action:@selector(shareT:)];
NSArray *mArray = [NSArray arrayWithObjects:menuItemCopy,menuItemNote,menuItemSearch,menuItemShare,nil];
[menuController setMenuItems:mArray];
}
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if(action == @selector(copyT:) || action == @selector(noteT:) || action == @selector(searchT:) || action == @selector(shareT:))
{
return YES;
}
return NO;
}
-(void)copyT:(id)sender
{
NSLog(@"複製");
}
-(void)noteT:(id)sender
{
NSLog(@"筆記");
}
-(void)searchT:(id)sender
{
NSLog(@"搜尋");
}
-(void)shareT:(id)sender
{
NSLog(@"分享");
}
@end
程式碼示例
CustomWebView *webview = [CustomWebView new];
webview.frame = self.view.bounds;
[self.view addSubview:webview];
NSURL *url = [NSURL URLWithString:@"http://www.feheadline.com/webapp/detail.html?id=3374280"];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url];
[webview loadRequest:req];
剛開始在CustomWebView.m的initWithFrame方法中,但是長按後選單欄一直沒有出來,後來發現,如果是通過xib新增此控制元件的話,通過斷點跟蹤就可發現,它是不會執行initWithFrame方法的,所以那段程式碼應該寫在-(void)awakeFromNib方法中,如果是通過程式碼新增的,就應該寫在initWithFrame方法中,否則不執行新增選單的操作。
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender這個方法可以篩選出需要的選單項,而自定義的WebView中已經重寫了這個方法,所以在webview中彈出的選單是需要的選單項,在其他控制元件中例如TextField控制元件,彈出的依舊會是系統預設的選單項,只是出於程式可讀性,可維護性考慮,最好在自定義的控制元件中修改選單性,單獨封裝起來。
圖片示例:
參考
http://jingyan.baidu.com/article/ac6a9a5e7d3e282b653eac1b.html
相關文章
- start11,自定義win11的選單欄和桌面欄工具
- 自定義右鍵選單
- NSToolbar 只保留自定義工具欄選項
- 「Mac新手必備」自定義 Mac 上的控制中心和選單欄Mac
- 自定義 Windows 右鍵選單項Windows
- 自定義下拉選單控制元件控制元件
- js自定義select下拉選單效果JS
- JavaScript自定義右鍵選單詳解JavaScript
- 自定義View:側滑選單實現View
- javascript自定義右鍵選單程式碼JavaScript
- Bartender 4:圖示顯示切換大變樣,還能在選單欄自定義文字
- DedeCMS的checkbox多選欄位自定義取值的方法
- Swift UIWebView 獲取404,504等載入自定義介面SwiftUIWebView
- TNW-微信公眾號自定義選單TNW
- layui自定義ajax左側三級選單UI
- 自定義View:側滑選單動畫實現View動畫
- 自定義通過PopupWindow實現通用選單
- Flutter 自定義功能強大的下拉篩選選單 packageFlutterPackage
- Android自定義View——從零開始實現可展開收起的水平選單欄AndroidView
- 自定義側邊快速索引欄索引
- Android 自定義標題欄Android
- uniapp自定義導航欄APP
- SAP 電商雲 Spartacus UI 的自定義 hamburger 選單UI
- 自定義view——仿酷狗的側滑選單View
- C# 對選單進行自定義樣式C#
- 工具欄選單
- wx選單欄
- 選單欄[MenuStrip]
- svelte自定義元件|導航條Navbar及選單欄Tabbar元件tabBar
- Flutter 自定義輸入框Selection選單和選擇器Flutter
- win10右鍵選單彈出方向怎麼自定義_win10如何自定義右鍵選單彈出方向Win10
- 《物料清單彙總查詢》二開增加自定義欄位
- HarmonyOS NEXT 5.0自定義增強版導航欄元件|鴻蒙ArkUI自定義標題欄元件鴻蒙UI
- 微信小程式自定義導航欄微信小程式
- Request 增加自定義欄位的方式
- ios自定義簡約導航欄iOS
- android短視訊開發,自定義下拉選單Android
- 自定義右鍵導航選單程式碼例項