最生僻的API做了下劃線以及粗體的標(biāo)注。百度上查了全是拷貝的同一份代碼,而且只有代碼沒有解釋,很是鄙視。
//1. UIWebViewNavigationType枚舉定義了頁面中用戶行為的分類
typedef NS_ENUM(NSInteger, UIWebViewNavigationType) {
UIWebViewNavigationTypeLinkClicked,//用戶觸發(fā)了一個鏈接
UIWebViewNavigationTypeFormSubmitted,//用戶提交了一個表單
UIWebViewNavigationTypeBackForward,//用戶觸擊前進前進或返回按鈕
UIWebViewNavigationTypeReload,//用戶觸擊重新加載的按鈕
UIWebViewNavigationTypeFormResubmitted,//用戶重復(fù)提交表單
UIWebViewNavigationTypeOther//發(fā)生了其他行為
};
//2. 加載內(nèi)容關(guān)于分頁顯示幾種不同類型
typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
UIWebPaginationModeUnpaginated,
UIWebPaginationModeLeftToRight,
UIWebPaginationModeTopToBottom,
UIWebPaginationModeBottomToTop,
UIWebPaginationModeRightToLeft
};
**//3.這個枚舉決定了webView加載頁面具有CSS屬性時是使用頁的樣式還是以列的樣式。**
**typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {**
** UIWebPaginationBreakingModePage,//默認(rèn)設(shè)置是這個屬性,CSS屬性以頁樣式。**
** UIWebPaginationBreakingModeColumn//當(dāng)UIWebPaginationBreakingMode設(shè)置這個屬性的時候,這個頁面內(nèi)容CSS屬性以column-break 代替page-breaking樣式。**
**};**
@class UIWebViewInternal;
@protocol UIWebViewDelegate;
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWebView : UIView<NSCoding, UIScrollViewDelegate> {
@private
UIWebViewInternal *_internal;
}
//4.實現(xiàn)WebView代理方法
@property (nonatomic, assign) id <UIWebViewDelegate> delegate;
//5.WebView的scrollView屬性
@property (nonatomic, readonly, retain) UIScrollView*scrollView NS_AVAILABLE_IOS(5_0);
//6.UIWebView加載資源最常用的一種方式,直接給出URL進行加載
- (void)loadRequest:(NSURLRequest *)request;
//7.UIWebView加載資源第二種方式,將本地html文件內(nèi)容嵌入到WebView
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL*)baseURL;
// 8. UIWebView加載資源第三種方式 將本地數(shù)據(jù)轉(zhuǎn)化為NSData嵌入到webView
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
//9.URL請求
@property (nonatomic, readonly, retain) NSURLRequest*request;
//10.webView加載刷新
- (void)reload;
//11. webView停止加載
- (void)stopLoading;
//12.當(dāng)webView跳轉(zhuǎn)了一個網(wǎng)頁時,執(zhí)行g(shù)oBack可以回退到之前的界面。
- (void)goBack;
//13..執(zhí)行g(shù)oForward前進一個之前跳過的界面
- (void)goForward;
//14.只讀型bool值,用來判斷當(dāng)前頁面是否可以回退
@property (nonatomic, readonly, getter=canGoBack) BOOLcanGoBack;
//15.只讀型bool值,用來判斷當(dāng)前頁面是否可以前進
@property (nonatomic, readonly, getter=canGoForward) BOOLcanGoForward;
//16.只讀型bool值,用來判斷當(dāng)前頁面是否可以加載刷新
@property (nonatomic, readonly, getter=isLoading) BOOLloading;
//17.這個方法需要等到webView加載完畢之后才會調(diào)用,通過它我們可以很方便的操作UIWebView中的頁面元素。參數(shù)script用來傳進當(dāng)前頁面文件元素字符串,對傳進來的字符串進行相應(yīng)的操作,例如[webview stringByRvaluaingJavaScriptFromString:@“document.title”],可以得到頁面的title
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
//18.是否讓內(nèi)容伸縮至適應(yīng)屏幕當(dāng)前尺寸
@property (nonatomic) BOOL scalesPageToFit;
//19.這個屬性如果設(shè)置為YES,當(dāng)進入到頁面視圖可以自動檢測電話號碼,讓用戶可以單機號碼進行撥打,不過現(xiàn)已棄用。
@property (nonatomic) BOOL detectsPhoneNumbersNS_DEPRECATED_IOS(2_0, 3_0);
//20.這個屬性可以設(shè)定使電話號碼,網(wǎng)址,電子郵件和符合格式的日期等文字變?yōu)檫B接文字。
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
//21.這個屬性決定了頁面用內(nèi)嵌HTML5播放視頻還是用本地的全屏控制。為了內(nèi)嵌視頻播放,不僅僅需要在這個頁面上設(shè)置這個屬性,還需要在HTML的viedeo元素必須包含webkit-playsinline屬性。默認(rèn)iPhone為NO,iPad為YES。
@property (nonatomic) BOOL allowsInlineMediaPlaybackNS_AVAILABLE_IOS(4_0); // iPhone Safari defaults to NO. iPad Safari defaults to YES
//22.這個屬性決定了HTML5視頻可以自動播放還是需要用戶啟動播放。iPhone和iPad默認(rèn)都是YES。
@property (nonatomic) BOOL mediaPlaybackRequiresUserActionNS_AVAILABLE_IOS(4_0); // iPhone and iPad Safari both default to YES
//23.這個屬性決定了從這個頁面是否可以Air Play。iPhone和iPad上都是默認(rèn)YES。
@property (nonatomic) BOOL mediaPlaybackAllowsAirPlayNS_AVAILABLE_IOS(5_0); // iPhone and iPad Safari both default to YES
//24.這個值決定了網(wǎng)頁內(nèi)容的渲染是否在把內(nèi)容全部假愛到內(nèi)存中再去處理。如果設(shè)置為YES,只有網(wǎng)頁內(nèi)容加載到內(nèi)存里了才會去渲染。默認(rèn)為NO。
@property (nonatomic) BOOL suppressesIncrementalRenderingNS_AVAILABLE_IOS(6_0); // iPhone and iPad Safari both default to NO
//25.這個屬性如果設(shè)置為YES,用戶必須明確的點擊頁面上的元素或者相關(guān)聯(lián)的輸入頁面來顯示鍵盤,。如果設(shè)置為NO,一個元素的焦點事件就會導(dǎo)致輸入視圖的顯示和自動關(guān)聯(lián)這個元素。
@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0); // default is YES
//26.iOS7之后的新API,設(shè)置頁面分頁模型選擇。
@property (nonatomic) UIWebPaginationMode paginationModeNS_AVAILABLE_IOS(7_0);
**//27.這個屬性決定了CSS屬性是采用column-break 還是page-breaking樣式。**
**@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);**
//28.分頁的長度
@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);
//29.多個頁面之間差距值
@property (nonatomic) CGFloat gapBetweenPagesNS_AVAILABLE_IOS(7_0);
//30.分頁的個數(shù)。
@property (nonatomic, readonly) NSUInteger pageCountNS_AVAILABLE_IOS(7_0);
@end
@protocol UIWebViewDelegate <NSObject>
@optional
//31.UIWebView的代理方法,當(dāng)webview開始加載請求的時候回去調(diào)用,可以攔截一些用戶的行為是否加載。返回YES代表允許加載,返回NO代表停止加載。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
//32.webView加載開始的時候調(diào)用。
- (void)webViewDidStartLoad:(UIWebView *)webView;
//33.webView加載完畢的時候調(diào)用。
- (void)webViewDidFinishLoad:(UIWebView *)webView;
//34.webView加載失敗的時候調(diào)用
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
@end