天天看點

iOS 學習 --- OC與JS互動(UIWebView)

UIWebView的屬性

//代理屬性
@property (nullable, nonatomic, assign) id <UIWebViewDelegate> delegate;
           
//WebView内部的scrollView,隻讀,可以通過這個屬性設定scrollView的代理,就可以控制整個WebView的滾動事件
@property (nonatomic, readonly, strong) UIScrollView *scrollView NS_AVAILABLE_IOS(5_0);
           

  NSURLRequest介紹

//WebView的請求,這個屬性一般在整個加載完成後才能拿到??????
@property (nullable, nonatomic, readonly, strong) NSURLRequest *request;
           
//YES:允許後退????
@property (nonatomic, readonly, getter=canGoBack) BOOL canGoBack;
           
//YES:允許前進????
@property (nonatomic, readonly, getter=canGoForward) BOOL canGoForward;
           
//YES:說明WebView還在加載資料,所有資料加載完畢後,loading就會為NO????
@property (nonatomic, readonly, getter=isLoading) BOOL loading;
           
//????
@property (nonatomic) BOOL detectsPhoneNumbers NS_DEPRECATED_IOS(2_0, 3_0);
//設定某些資料變為連結形式,這個枚舉類型可以設定如電話号,位址,郵箱等轉化為連結
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
           
//設定為否使用内聯播放器播放視訊
@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0); // iPhone Safari defaults to NO. iPad Safari defaults to YES
           
//設定視訊是否自動播放
@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0); // iPhone and iPad Safari both default to YES
           
//設定音頻播放是否支援AriPlay功能???
@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0); // iPhone and iPad Safari both default to YES
           
//設定是否将資料加載入記憶體後渲染界面
@property (nonatomic) BOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0); // iPhone and iPad Safari both default to NO
           
//設定使用者是否能打開keyboard互動
@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0); // default is YES
           
//iOS7新特性
//枚舉類型,當網頁的大小超出view時,将網頁以翻頁的效果展示
@property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);

typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
    UIWebPaginationModeUnpaginated,//不使用翻頁效果
    UIWebPaginationModeLeftToRight,//從左向右翻頁
    UIWebPaginationModeTopToBottom,//從上向下翻頁
    UIWebPaginationModeBottomToTop,//從下向上翻頁
    UIWebPaginationModeRightToLeft//從右向左翻頁
} __TVOS_PROHIBITED;

//這個屬性決定CSS的屬性分頁是可用還是忽略。預設是UIWebPaginationBreakingModePage????
@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);
//設定每一頁的長度
@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);
//設定每一頁的間距
@property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);
//擷取頁數
@property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);
           
//iOS9新增
@property (nonatomic) BOOL allowsPictureInPictureMediaPlayback NS_AVAILABLE_IOS(9_0);

@property (nonatomic) BOOL allowsLinkPreview NS_AVAILABLE_IOS(9_0); // default is NO
           

UIWebView的代理方法

/**
   JS互動時的重點方法
   UIWebView的代理方法,當webview開始加載請求的時候回去調用,可以攔截一些使用者的行為是否加載。傳回YES代表允許加載,傳回NO代表停止加載。
 */
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
/**
   webView加載開始的時候調用
 */
- (void)webViewDidStartLoad:(UIWebView *)webView;
/**
  webView加載完畢的時候調用。
 */
- (void)webViewDidFinishLoad:(UIWebView *)webView;
/**
   webView加載失敗的時候調用
 */
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
           

UIWebView的對象方法

//加載一個請求(常用)
- (void)loadRequest:(NSURLRequest *)request;
//加載本地HTML(常用)
- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
//加載Data資料
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

//重新整理網頁
- (void)reload;
//停止網頁加載内容
- (void)stopLoading;
//後退
- (void)goBack;
//前進
- (void)goForward;
//執行JS方法
- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
           

相關文章

iOS-NSURLRequest

NSURLRequest和NSMutableURLRequest

繼續閱讀