最生僻的API做了下劃線以及粗體的標注。百度上查了全是拷貝的同一份代碼,而且只有代碼沒有解釋,很是鄙視。
//1.
UIWebViewNavigationType枚舉定義了頁面中用戶行為的分類
typedef
NS_ENUM(NSInteger, UIWebViewNavigationType) {
UIWebViewNavigationTypeLinkClicked,//用戶觸發了一個鏈接
UIWebViewNavigationTypeFormSubmitted,//用戶提交了一個表單
UIWebViewNavigationTypeBackForward,//用戶觸擊前進前進或返回按鈕
UIWebViewNavigationTypeReload,//用戶觸擊重新加載的按鈕
UIWebViewNavigationTypeFormResubmitted,//用戶重復提交表單
UIWebViewNavigationTypeOther//發生了其他行為
};
//2. 加載內容關於分頁顯示幾種不同類型
typedef
NS_ENUM(NSInteger, UIWebPaginationMode) {
UIWebPaginationModeUnpaginated,
UIWebPaginationModeLeftToRight,
UIWebPaginationModeTopToBottom,
UIWebPaginationModeBottomToTop,
UIWebPaginationModeRightToLeft
};
//3.這個枚舉決定了webView加載頁面具有CSS屬性時是使用頁的樣式還是以列的樣式。
typedef
NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
UIWebPaginationBreakingModePage,//默認設置是這個屬性,CSS屬性以頁樣式。
UIWebPaginationBreakingModeColumn//當UIWebPaginationBreakingMode設置這個屬性的時候,這個頁面內容CSS屬性以column-break
代替page-breaking樣式。
};
@classUIWebViewInternal;
@protocolUIWebViewDelegate;
NS_CLASS_AVAILABLE_IOS(2_0)
@interface UIWebView :
UIView <NSCoding,
UIScrollViewDelegate> {
@private
UIWebViewInternal *_internal;
}
//4.實現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文件內容嵌入到WebView
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
// 8. UIWebView加載資源第三種方式 將本地數據轉化為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.當webView跳轉了一個網頁時,執行goBack可以回退到之前的界面。
- (void)goBack;
//13..執行goForward前進一個之前跳過的界面
- (void)goForward;
//14.只讀型bool值,用來判斷當前頁面是否可以回退
@property (nonatomic,
readonly, getter=canGoBack)
BOOL canGoBack;
//15.只讀型bool值,用來判斷當前頁面是否可以前進
@property (nonatomic,
readonly, getter=canGoForward)
BOOL canGoForward;
//16.只讀型bool值,用來判斷當前頁面是否可以加載刷新
@property (nonatomic,
readonly, getter=isLoading)
BOOL loading;
//17.這個方法需要等到webView加載完畢之後才會調用,通過它我們可以很方便的操作UIWebView中的頁面元素。參數script用來傳進當前頁面文件元素字符串,對傳進來的字符串進行相應的操作,例如[webview stringByRvaluaingJavaScriptFromString:@“document.title”],可以得到頁面的title
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
//18.是否讓內容伸縮至適應屏幕當前尺寸
@property (nonatomic)
BOOL scalesPageToFit;
//19.這個屬性如果設置為YES,當進入到頁面視圖可以自動檢測電話號碼,讓用戶可以單機號碼進行撥打,不過現已棄用。
@property (nonatomic)
BOOL detectsPhoneNumbers
NS_DEPRECATED_IOS(2_0,
3_0);
//20.這個屬性可以設定使電話號碼,網址,電子郵件和符合格式的日期等文字變為連接文字。
@property (nonatomic)
UIDataDetectorTypes dataDetectorTypes
NS_AVAILABLE_IOS(3_0);
//21.這個屬性決定了頁面用內嵌HTML5播放視頻還是用本地的全屏控制。為了內嵌視頻播放,不僅僅需要在這個頁面上設置這個屬性,還需要在HTML的viedeo元素必須包含webkit-playsinline屬性。默認iPhone為NO,iPad為YES。
@property (nonatomic)
BOOL allowsInlineMediaPlayback
NS_AVAILABLE_IOS(4_0);
// iPhone Safari defaults to NO. iPad Safari defaults to YES
//22.這個屬性決定了HTML5視頻可以自動播放還是需要用戶啟動播放。iPhone和iPad默認都是YES。
@property (nonatomic)
BOOL mediaPlaybackRequiresUserAction
NS_AVAILABLE_IOS(4_0);
// iPhone and iPad Safari both default to YES
//23.這個屬性決定了從這個頁面是否可以Air Play。iPhone和iPad上都是默認YES。
@property (nonatomic)
BOOL mediaPlaybackAllowsAirPlay
NS_AVAILABLE_IOS(5_0);
// iPhone and iPad Safari both default to YES
//24.這個值決定了網頁內容的渲染是否在把內容全部假愛到內存中再去處理。如果設置為YES,只有網頁內容加載到內存裡了才會去渲染。默認為NO。
@property (nonatomic)
BOOL suppressesIncrementalRendering
NS_AVAILABLE_IOS(6_0);
// iPhone and iPad Safari both default to NO
//25.這個屬性如果設置為YES,用戶必須明確的點擊頁面上的元素或者相關聯的輸入頁面來顯示鍵盤,。如果設置為NO,一個元素的焦點事件就會導致輸入視圖的顯示和自動關聯這個元素。
@property (nonatomic)
BOOL keyboardDisplayRequiresUserAction
NS_AVAILABLE_IOS(6_0);
// default is YES
//26.iOS7之後的新API,設置頁面分頁模型選擇。
@property (nonatomic)
UIWebPaginationMode paginationMode
NS_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 gapBetweenPages
NS_AVAILABLE_IOS(7_0);
//30.分頁的個數。
@property (nonatomic,
readonly) NSUInteger pageCount
NS_AVAILABLE_IOS(7_0);
@end
@protocol UIWebViewDelegate <NSObject>
@optional
//31.UIWebView的代理方法,當webview開始加載請求的時候回去調用,可以攔截一些用戶的行為是否加載。返回YES代表允許加載,返回NO代表停止加載。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest
*)request navigationType:(UIWebViewNavigationType)navigationType;
//32.webView加載開始的時候調用。
- (void)webViewDidStartLoad:(UIWebView *)webView;
//33.webView加載完畢的時候調用。
- (void)webViewDidFinishLoad:(UIWebView *)webView;
//34.webView加載失敗的時候調用
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
@end