UIWebView

UIWebView

You use the UIWebView class to embed web content in your application. To do so, you simply create a UIWebView object, attach it to a window, and send it a request to load web content. You can also use this class to move back and forward in the history of webpages, and you can even set some web content properties programmatically.

Use the loadRequest: method to begin loading web content, the stopLoading method to stop loading, and the loading property to find out if a web view is in the process of loading.

If you allow the user to move back and forward through the webpage history, then you can use the goBack and goForward methods as actions for buttons. Use the canGoBack and canGoForward properties to disable the buttons when the user can’t move in a direction.

By default, a web view automatically converts telephone numbers that appear in web content to Phone links. When a Phone link is tapped, the Phone application launches and dials the number. Set the detectsPhoneNumbers property to NO to turn off this default behavior.

You can also use the scalesPageToFit property to programmatically set the scale of web content the first time it is displayed in a web view. Thereafter, the user can change the scale using gestures.

Set the delegate property to an object conforming to the UIWebViewDelegateprotocol if you want to track the loading of web content.

IMPORTANT

You should not embed UIWebView or UITableView objects in UIScrollView objects. If you do so, unexpected behavior can result because touch events for the two objects can be mixed up and wrongly handled.

You can easily debug the HTML, CSS, and JavaScript contained inside a UIWebView with Web Inspector. Read Debugging Web Content on iOS to learn how to configure Web Inspector for iOS. Read the rest of Safari Web Content Guide to learn how to create web content that is optimized for Safari on iPhone and iPad.

For information about basic view behaviors, see View Programming Guide for iOS

Supported File Formats

In addition to HTML content, UIWebView objects can be used to display other content types. For more information, see Using UIWebView to display select document types.

State Preservation

In iOS 6 and later, if you assign a value to this view’s restorationIdentifier property, it attempts to preserve its URL history, the scaling and scrolling positions for each page, and information about which page is currently being viewed. During restoration, the view restores these values so that the web content appears just as it did before. For more information about how state preservation and restoration works, see App Programming Guide for iOS

For more information about appearance and behavior configuration, see Web Views in UIKit User Interface Catalog.

Subclassing Notes

The UIWebView class should not be subclassed.

Setting the Delegate

  • The receiver’s delegate.

    Declaration

    SWIFT

    unowned(unsafe) var delegate: UIWebViewDelegate?

    OBJECTIVE-C

    @property(nonatomicassignidUIWebViewDelegate delegate

    Discussion

    The delegate is sent messages when content is loading. See UIWebViewDelegate Protocol Reference for the optional methods this delegate may implement.

    IMPORTANT

    Before releasing an instance of UIWebView for which you have set a delegate, you must first set its delegate property to nil. This can be done, for example, in your dealloc method.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  •  

     

     

     

Loading Content

  • Sets the main page contents, MIME type, content encoding, and base URL.

    Declaration

    SWIFT

        func loadData(dataNSData!,
            MIMEType MIMETypeString!,
    textEncodingName encodingNameString!,
             baseURL baseURLNSURL!)

    OBJECTIVE-C

    - (void)loadData:(NSData *)data
            MIMEType:(NSString *)MIMEType
    textEncodingName:(NSString *)encodingName
             baseURL:(NSURL *)baseURL

    Parameters
    data

    The content for the main page.

    MIMEType

    The MIME type of the content.

    encodingName

    The IANA encoding name as in utf-8 or utf-16.

    baseURL

    The base URL for the content.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • Sets the main page content and base URL.

    Declaration

    SWIFT

    func loadHTMLString(stringString!,
                baseURL baseURLNSURL!)

    OBJECTIVE-C

    - (void)loadHTMLString:(NSString *)string
                   baseURL:(NSURL *)baseURL

    Parameters
    string

    The content for the main page.

    baseURL

    The base URL for the content.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • Connects to a given URL by initiating an asynchronous client request.

    Declaration

    SWIFT

    func loadRequest(requestNSURLRequest)

    OBJECTIVE-C

    - (void)loadRequest:(NSURLRequest *)request

    Parameters
    request

    A URL request identifying the location of the content to load.

    Discussion

      To stop this load, use the stopLoading method. To see whether the receiver is done loading the content, use the loading property.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • The URL request identifying the location of the content to load. (read-only)

    Declaration

    SWIFT

    var request: NSURLRequest? { get }

    OBJECTIVE-C

    @property(nonatomicreadonlyretainNSURLRequest *request

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • A Boolean value indicating whether the receiver is done loading content. (read-only)

    Declaration

    SWIFT

    var loading: Bool { get }

    OBJECTIVE-C

    @property(nonatomicreadonlygetter=isLoadingBOOL loading

    Discussion

    If YES, the receiver is still loading content; otherwise, NO.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • Stops the loading of any web content managed by the receiver.

    Declaration

    SWIFT

    func stopLoading()

    OBJECTIVE-C

    - (void)stopLoading

    Discussion

    Stops any content in the process of being loaded by the main frame or any of its children frames. Does nothing if no content is being loaded.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • Reloads the current page.

    Declaration

    SWIFT

    func reload()

    OBJECTIVE-C

    - (void)reload

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  •  

     

     

     

Moving Back and Forward

  • A Boolean value indicating whether the receiver can move backward. (read-only)

    Declaration

    SWIFT

    var canGoBack: Bool { get }

    OBJECTIVE-C

    @property(nonatomicreadonlygetter=canGoBackBOOL canGoBack

    Discussion

    If YES, able to move backward; otherwise, NO.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

    See Also

      canGoForward

  • A Boolean value indicating whether the receiver can move forward. (read-only)

    Declaration

    SWIFT

    var canGoForward: Bool { get }

    OBJECTIVE-C

    @property(nonatomicreadonlygetter=canGoForwardBOOLcanGoForward

    Discussion

    If YES, able to move forward; otherwise, NO .

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

    See Also

      canGoBack

  • Loads the previous location in the back-forward list.

    Declaration

    SWIFT

    func goBack()

    OBJECTIVE-C

    - (void)goBack

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

    See Also

    – goForward

  • Loads the next location in the back-forward list.

    Declaration

    SWIFT

    func goForward()

    OBJECTIVE-C

    - (void)goForward

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

    See Also

    – goBack

  •  

     

     

     

Setting Web Content Properties

  • detectsPhoneNumbers  (iOS 3.0)

    A Boolean value indicating whether telephone number detection is on.

    Deprecation Statement

      Use dataDetectorTypes instead.

    Declaration

    OBJECTIVE-C

    @property(nonatomicBOOL detectsPhoneNumbers

    Discussion

    If YES, telephone number detection is on; otherwise, NO. If a webpage contains numbers that can be interpreted as phone numbers, but are not phone numbers, you can turn off telephone number detection by setting this property to NO. The default value is YES on devices that have phone capabilities.

    Special Considerations

      The functionality provided by this property has been superseded by the dataDetectorTypes property.

    Import Statement

     

    Availability

    Available in iOS 2.0 and later.

    Deprecated in iOS 3.0.

  • A Boolean value determining whether the webpage scales to fit the view and the user can change the scale.

    Declaration

    SWIFT

    var scalesPageToFit: Bool

    OBJECTIVE-C

    @property(nonatomicBOOL scalesPageToFit

    Discussion

    If YES, the webpage is scaled to fit and the user can zoom in and zoom out. If NO, user zooming is disabled. The default value is NO.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  • The scroll view associated with the web view. (read-only)

    Declaration

    SWIFT

    var scrollView: UIScrollView { get }

    OBJECTIVE-C

    @property(nonatomicreadonlyretainUIScrollView *scrollView

    Discussion

    Your application can access the scroll view if it wants to customize the scrolling behavior of the web view.

    Import Statement

    import UIKit

    Availability

    Available in iOS 5.0 and later.

  • A Boolean value indicating whether the web view suppresses content rendering until it is fully loaded into memory.

    Declaration

    SWIFT

    var suppressesIncrementalRendering: Bool

    OBJECTIVE-C

    @property(nonatomicBOOL suppressesIncrementalRendering

    Discussion

    When set to YES, the web view does not attempt to render incoming content as it arrives. Instead, the view’s current contents remain in place until all of the new content has been received, at which point the new content is rendered. This property does not affect the rendering of content retrieved after a frame finishes loading. 

    The value of this property is NO by default.

    Import Statement

    import UIKit

    Availability

    Available in iOS 6.0 and later.

  • A Boolean value indicating whether web content can programmatically display the keyboard.

    Declaration

    SWIFT

    var keyboardDisplayRequiresUserAction: Bool

    OBJECTIVE-C

    @property(nonatomicBOOL keyboardDisplayRequiresUserAction

    Discussion

    When this property is set to YES, the user must explicitly tap the elements in the web view to display the keyboard (or other relevant input view) for that element. When set to NO, a focus event on an element causes the input view to be displayed and associated with that element automatically. 

    The default value for this property is YES.

    Import Statement

    import UIKit

    Availability

    Available in iOS 6.0 and later.

  •  

     

     

     

Running JavaScript

  • Returns the result of running a script.

    Declaration

    SWIFT

    func stringByEvaluatingJavaScriptFromString(scriptString) -> String?

    OBJECTIVE-C

    - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString*)script

    Parameters
    script

    The script to run.

    Return Value

    The result of running script or nil if it fails.

    Discussion

    JavaScript allocations are limited to 10 MB. The web view raises an exception if you exceed this limit on the total memory allocation for JavaScript.

    Import Statement

    import UIKit

    Availability

    Available in iOS 2.0 and later.

  •  

     

     

     

Detecting Types of Data

  • The types of data converted to clickable URLs in the web view’s content.

    Declaration

    SWIFT

    var dataDetectorTypes: UIDataDetectorTypes

    OBJECTIVE-C

    @property(nonatomicUIDataDetectorTypes dataDetectorTypes

    Discussion

    You can use this property to specify the types of data (phone numbers, http links, email address, and so on) that should be automatically converted to clickable URLs in the web view. When clicked, the web view opens the application responsible for handling the URL type and passes it the URL. 

    Import Statement

    import UIKit

    Availability

    Available in iOS 3.0 and later.

  •  

     

     

     

Managing Media Playback

  • A Boolean value that determines whether HTML5 videos play inline or use the native full-screen controller.

    Declaration

    SWIFT

    var allowsInlineMediaPlayback: Bool

    OBJECTIVE-C

    @property(nonatomicBOOL allowsInlineMediaPlayback

    Discussion

    The default value on iPhone is NO.

    In order for video to play inline, not only does this property need to be set on the view, but the video element in the HTML document must also include the webkit-playsinline attribute.

    Import Statement

    import UIKit

    Availability

    Available in iOS 4.0 and later.

  • A Boolean value that determines whether HTML5 videos can play automatically or require the user to start playing them.

    Declaration

    SWIFT

    var mediaPlaybackRequiresUserAction: Bool

    OBJECTIVE-C

    @property(nonatomicBOOL mediaPlaybackRequiresUserAction

    Discussion

    The default value on both iPad and iPhone is YES. To make media play automatically when loaded, set this property to NO and ensure the <audio> or <video> element you want to play has the autoplay attribute set.

    Import Statement

    import UIKit

    Availability

    Available in iOS 4.0 and later.

  • A Boolean value that determines whether Air Play is allowed from this view.

    Declaration

    SWIFT

    var mediaPlaybackAllowsAirPlay: Bool

    OBJECTIVE-C

    @property(nonatomicBOOL mediaPlaybackAllowsAirPlay

    Discussion

    The default value on both iPad and iPhone is YES.

    Import Statement

    import UIKit

    Availability

    Available in iOS 5.0 and later.

  •  

     

     

     

Managing Pages

  • The size of the gap, in points, between pages.

    Declaration

    SWIFT

    var gapBetweenPages: CGFloat

    OBJECTIVE-C

    @property(nonatomicCGFloat gapBetweenPages

    Discussion

    The default value is 0.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • The number of pages produced by the layout of the web view. (read-only)

    Declaration

    SWIFT

    var pageCount: Int { get }

    OBJECTIVE-C

    @property(nonatomicreadonlyNSUInteger pageCount

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • The size of each page, in points, in the direction that the pages flow.

    Declaration

    SWIFT

    var pageLength: CGFloat

    OBJECTIVE-C

    @property(nonatomicCGFloat pageLength

    Discussion

        When paginationMode is right to left or left to right, this property represents the width of each page. When paginationMode is top to bottom or bottom to top, this property represents the height of each page.

    The default value is 0, which means the layout uses the size of the viewport to determine the dimensions of the page. Adjusting the value of this property causes a relayout. 

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • The manner in which column- or page-breaking occurs.

    Declaration

    SWIFT

    var paginationBreakingMode: UIWebPaginationBreakingMode

    OBJECTIVE-C

    @property(nonatomicUIWebPaginationBreakingModepaginationBreakingMode

    Discussion

    This property determines whether certain CSS properties regarding column- and page-breaking are honored or ignored. When this property is set to UIWebPaginationBreakingModeColumn, the content respects the CSS properties related to column-breaking in place of page-breaking.

    See UIWebPaginationBreakingMode for possible values. The default value is UIWebPaginationBreakingModePage.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • The layout of content in the web view.

    Declaration

    SWIFT

    var paginationMode: UIWebPaginationMode

    OBJECTIVE-C

    @property(nonatomicUIWebPaginationMode paginationMode

    Discussion

        This property determines whether content in the web view is broken up into pages that fill the view one screen at a time, or shown as one long scrolling view. If set to a paginated form, this property toggles a paginated layout on the content, causing the web view to use the values of pageLengthand gapBetweenPages to relayout its content.

    See UIWebPaginationMode for possible values. The default value is UIWebPaginationModeUnpaginated.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  •  

     

     

     

Data Types

  • Constant indicating the user’s action.

    Declaration

    OBJECTIVE-C

    enum { UIWebViewNavigationTypeLinkClicked, UIWebViewNavigationTypeFormSubmitted, UIWebViewNavigationTypeBackForward, UIWebViewNavigationTypeReload, UIWebViewNavigationTypeFormResubmitted, UIWebViewNavigationTypeOther }; typedef NSUInteger UIWebViewNavigationType;

    Constants
    • UIWebViewNavigationTypeLinkClicked

      User tapped a link.

      Available in iOS 2.0 and later.

    • UIWebViewNavigationTypeFormSubmitted

      User submitted a form.

      Available in iOS 2.0 and later.

    • UIWebViewNavigationTypeBackForward

      User tapped the back or forward button.

      Available in iOS 2.0 and later.

    • UIWebViewNavigationTypeReload

      User tapped the reload button.

      Available in iOS 2.0 and later.

    • UIWebViewNavigationTypeFormResubmitted

      User resubmitted a form.

      Available in iOS 2.0 and later.

    • UIWebViewNavigationTypeOther

      Some other action occurred.

      Available in iOS 2.0 and later.

    Import Statement

     

    Availability

    Available in iOS 2.0 and later.

  •  

     

     

     

Constants

  • The manner in which column- or page-breaking occurs.

    Declaration

    OBJECTIVE-C

    typedef NS_ENUM (NSInteger , UIWebPaginationBreakingMode ) { UIWebPaginationBreakingModePage , UIWebPaginationBreakingModeColumn };

    Constants
    • UIWebPaginationBreakingModePage

      Content respects CSS properties related to page-breaking.

      Available in iOS 7.0 and later.

    • UIWebPaginationBreakingModeColumn

      Content respects CSS properties related to column-breaking.

      Available in iOS 7.0 and later.

    Import Statement

     

    Availability

    Available in iOS 7.0 and later.

  • The layout of content in the web view, which determines the direction that the pages flow.

    Declaration

    OBJECTIVE-C

    typedef NS_ENUM (NSInteger , UIWebPaginationMode ) { UIWebPaginationModeUnpaginated , UIWebPaginationModeLeftToRight , UIWebPaginationModeTopToBottom , UIWebPaginationModeBottomToTop , UIWebPaginationModeRightToLeft };

    Constants
    • UIWebPaginationModeUnpaginated

      Content appears as one long scrolling view with no distinct pages.

      Available in iOS 7.0 and later.

    • UIWebPaginationModeLeftToRight

      Content is broken up into pages that flow from left to right.

      Available in iOS 7.0 and later.

    • UIWebPaginationModeTopToBottom

      Content is broken up into pages that flow from top to bottom.

      Available in iOS 7.0 and later.

    • UIWebPaginationModeBottomToTop

      Content is broken up into pages that flow from bottom to top.

      Available in iOS 7.0 and later.

    • UIWebPaginationModeRightToLeft

      Content is broken up into pages that flow from right to left.

      Available in iOS 7.0 and later.

    Import Statement

     

    Availability

    Available in iOS 7.0 and later.

 

转载于:https://www.cnblogs.com/zyingn/articles/UIWebView.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值