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.
-
The receiver’s delegate.
Declaration
SWIFT
unowned(unsafe) var delegate: UIWebViewDelegate?OBJECTIVE-C
@property(nonatomic, assign) id< UIWebViewDelegate > delegateDiscussion
The delegate is sent messages when content is loading. See UIWebViewDelegate Protocol Reference for the optional methods this delegate may implement.
Import Statement
import UIKitAvailability
Available in iOS 2.0 and later.
-
-
Sets the main page contents, MIME type, content encoding, and base URL.
Declaration
Parameters
dataThe content for the main page.
MIMETypeThe MIME type of the content.
encodingNameThe IANA encoding name as in
utf-8orutf-16.baseURLThe base URL for the content.
Import Statement
import UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
Sets the main page content and base URL.
Declaration
Parameters
stringThe content for the main page.
baseURLThe base URL for the content.
Import Statement
import UIKitAvailability
Available in iOS 2.0 and later.
-
Connects to a given URL by initiating an asynchronous client request.
Declaration
SWIFT
func loadRequest(_request: NSURLRequest)OBJECTIVE-C
- (void)loadRequest:(NSURLRequest *)requestParameters
requestA URL request identifying the location of the content to load.
Discussion
To stop this load, use the
stopLoadingmethod. To see whether the receiver is done loading the content, use theloadingproperty.Import Statement
import UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
The URL request identifying the location of the content to load. (read-only)
Declaration
SWIFT
var request: NSURLRequest? { get }OBJECTIVE-C
@property(nonatomic, readonly, retain) NSURLRequest *requestImport Statement
import UIKitAvailability
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(nonatomic, readonly, getter=isLoading) BOOL loadingDiscussion
If
YES, the receiver is still loading content; otherwise,NO.Import Statement
import UIKitAvailability
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)stopLoadingDiscussion
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 UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
Reloads the current page.
Declaration
SWIFT
func reload()OBJECTIVE-C
- (void)reloadImport Statement
import UIKitAvailability
Available in iOS 2.0 and later.
-
-
A Boolean value indicating whether the receiver can move backward. (read-only)
Declaration
SWIFT
var canGoBack: Bool { get }OBJECTIVE-C
@property(nonatomic, readonly, getter=canGoBack) BOOL canGoBackDiscussion
If
YES, able to move backward; otherwise,NO.Import Statement
import UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
A Boolean value indicating whether the receiver can move forward. (read-only)
Declaration
SWIFT
var canGoForward: Bool { get }OBJECTIVE-C
@property(nonatomic, readonly, getter=canGoForward) BOOLcanGoForwardDiscussion
If
YES, able to move forward; otherwise,NO.Import Statement
import UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
Loads the previous location in the back-forward list.
Declaration
SWIFT
func goBack()OBJECTIVE-C
- (void)goBackImport Statement
import UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
Loads the next location in the back-forward list.
Declaration
SWIFT
func goForward()OBJECTIVE-C
- (void)goForwardImport Statement
import UIKitAvailability
Available in iOS 2.0 and later.
See Also
-
-
detectsPhoneNumbers(iOS 3.0)A Boolean value indicating whether telephone number detection is on.
Deprecation Statement
Use
dataDetectorTypesinstead.Declaration
OBJECTIVE-C
@property(nonatomic) BOOL detectsPhoneNumbersDiscussion
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 toNO. The default value isYESon devices that have phone capabilities.Special Considerations
The functionality provided by this property has been superseded by the
dataDetectorTypesproperty.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: BoolOBJECTIVE-C
@property(nonatomic) BOOL scalesPageToFitDiscussion
If
YES, the webpage is scaled to fit and the user can zoom in and zoom out. IfNO, user zooming is disabled. The default value isNO.Import Statement
import UIKitAvailability
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(nonatomic, readonly, retain) UIScrollView *scrollViewDiscussion
Your application can access the scroll view if it wants to customize the scrolling behavior of the web view.
Import Statement
import UIKitAvailability
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: BoolOBJECTIVE-C
@property(nonatomic) BOOL suppressesIncrementalRenderingDiscussion
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
NOby default.Import Statement
import UIKitAvailability
Available in iOS 6.0 and later.
-
A Boolean value indicating whether web content can programmatically display the keyboard.
Declaration
SWIFT
var keyboardDisplayRequiresUserAction: BoolOBJECTIVE-C
@property(nonatomic) BOOL keyboardDisplayRequiresUserActionDiscussion
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 toNO, 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 UIKitAvailability
Available in iOS 6.0 and later.
-
-
Returns the result of running a script.
Declaration
Parameters
scriptThe script to run.
Return Value
The result of running
scriptornilif 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 UIKitAvailability
Available in iOS 2.0 and later.
-
-
The types of data converted to clickable URLs in the web view’s content.
Declaration
SWIFT
var dataDetectorTypes: UIDataDetectorTypesOBJECTIVE-C
@property(nonatomic) UIDataDetectorTypes dataDetectorTypesDiscussion
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 UIKitAvailability
Available in iOS 3.0 and later.
-
-
A Boolean value that determines whether HTML5 videos play inline or use the native full-screen controller.
Declaration
SWIFT
var allowsInlineMediaPlayback: BoolOBJECTIVE-C
@property(nonatomic) BOOL allowsInlineMediaPlaybackDiscussion
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
videoelement in the HTML document must also include thewebkit-playsinlineattribute.Import Statement
import UIKitAvailability
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: BoolOBJECTIVE-C
@property(nonatomic) BOOL mediaPlaybackRequiresUserActionDiscussion
The default value on both iPad and iPhone is
YES. To make media play automatically when loaded, set this property toNOand ensure the<audio>or<video>element you want to play has theautoplayattribute set.Import Statement
import UIKitAvailability
Available in iOS 4.0 and later.
-
A Boolean value that determines whether Air Play is allowed from this view.
Declaration
SWIFT
var mediaPlaybackAllowsAirPlay: BoolOBJECTIVE-C
@property(nonatomic) BOOL mediaPlaybackAllowsAirPlayDiscussion
The default value on both iPad and iPhone is
YES.Import Statement
import UIKitAvailability
Available in iOS 5.0 and later.
-
-
The size of the gap, in points, between pages.
Declaration
SWIFT
var gapBetweenPages: CGFloatOBJECTIVE-C
@property(nonatomic) CGFloat gapBetweenPagesDiscussion
The default value is
0.Import Statement
import UIKitAvailability
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(nonatomic, readonly) NSUInteger pageCountImport Statement
import UIKitAvailability
Available in iOS 7.0 and later.
-
The size of each page, in points, in the direction that the pages flow.
Discussion
When
paginationModeis right to left or left to right, this property represents the width of each page. WhenpaginationModeis 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 UIKitAvailability
Available in iOS 7.0 and later.
-
The manner in which column- or page-breaking occurs.
Declaration
SWIFT
var paginationBreakingMode: UIWebPaginationBreakingModeOBJECTIVE-C
@property(nonatomic) UIWebPaginationBreakingModepaginationBreakingModeDiscussion
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 UIKitAvailability
Available in iOS 7.0 and later.
-
The layout of content in the web view.
Declaration
SWIFT
var paginationMode: UIWebPaginationModeOBJECTIVE-C
@property(nonatomic) UIWebPaginationMode paginationModeDiscussion
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
pageLengthandgapBetweenPagesto relayout its content.See UIWebPaginationMode for possible values. The default value is
UIWebPaginationModeUnpaginated.Import Statement
import UIKitAvailability
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
-
UIWebViewNavigationTypeLinkClickedUser tapped a link.
Available in iOS 2.0 and later.
-
UIWebViewNavigationTypeFormSubmittedUser submitted a form.
Available in iOS 2.0 and later.
-
UIWebViewNavigationTypeBackForwardUser tapped the back or forward button.
Available in iOS 2.0 and later.
-
UIWebViewNavigationTypeReloadUser tapped the reload button.
Available in iOS 2.0 and later.
-
UIWebViewNavigationTypeFormResubmittedUser resubmitted a form.
Available in iOS 2.0 and later.
-
UIWebViewNavigationTypeOtherSome 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
-
UIWebPaginationBreakingModePageContent respects CSS properties related to page-breaking.
Available in iOS 7.0 and later.
-
UIWebPaginationBreakingModeColumnContent 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
-
UIWebPaginationModeUnpaginatedContent appears as one long scrolling view with no distinct pages.
Available in iOS 7.0 and later.
-
UIWebPaginationModeLeftToRightContent is broken up into pages that flow from left to right.
Available in iOS 7.0 and later.
-
UIWebPaginationModeTopToBottomContent is broken up into pages that flow from top to bottom.
Available in iOS 7.0 and later.
-
UIWebPaginationModeBottomToTopContent is broken up into pages that flow from bottom to top.
Available in iOS 7.0 and later.
-
UIWebPaginationModeRightToLeftContent 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.
-

浙公网安备 33010602011771号