When we are displaying a portal in web view, Sometimes it may fail to load the url.
This could be because of,
- No internet connection in the device
- Timeout
- Server is not reachable/responding
And there could be many other reasons.
Instead of displaying that Error in an alert, we can directly display that error description in the UIWebView in a HTML format.
Whenever UIWebView fails to load a page, UIWebViewDelegate method will get called.
-----------------------------------------------------------------------------------
- (void)webView:(UIWebView *)webView
didFailLoadWithError:(NSError *)error {
}
-----------------------------------------------------------------------------------
From this we can fetch the error and display the description using the loadHTMLString method of UIWebView.
-----------------------------------------------------------------------------------
- (void)webView:(UIWebView *)webView
didFailLoadWithError:(NSError *)error {
if (error) {
[self displayError: error];
}
}
- (void)displayError: (NSError*)error {
NSString *message = [NSString stringWithFormat:@"%@\n\n%@", error.localizedDescription, [error.userInfo objectForKey:@"NSErrorFailingURLStringKey"]];
NSString *htmlErrorDescription = [NSString
stringWithFormat:
@"%@", [UIFont mediumFontName], message];
[self.webView loadHTMLString:htmlErrorDescription
baseURL:nil];
}
-----------------------------------------------------------------------------------
Customize your own htmlErrorDescription by using respective HTML format we want to display the error.
The same logic could be used If you are using WKWebView from WebKit as UIWebView is deprecated now.
The same logic could be used If you are using WKWebView from WebKit as UIWebView is deprecated now.
Hope this post is useful. Feel free to comment incase of any queries.
Swift Protocols & Extensions |
---|
Swift Comparable Protocol |
Swift Equatable Protocol |
Protocol Extensions for Default and Convenient API |
Protocols vs Base classes |
Multiple Inheritance using protocols |
Swift Protocol Extensions |
Swift Constrained Extensions |
Multiple Inheritance, Diamond problem |
Multiple Inheritance using protocols, Diamond Problem |
Swift - Preserving Structure Default Initializer using Extensions |
Swift Closures |
---|
Swift Closures Capture List |
Swift Escaping Closures (@escaping) |
Swift - weak and unowned references |
Swift 4 Tutorials |
---|
Swift 4 NEW Tutorial-1 (One Sided Ranges) |
Swift 4 NEW Tutorial-2 (Strings are Collections Again) |
Swift 4 NEW Tutorial-3 (private instead fileprivate) |
Swift 4 NEW Tutorial-4 (fileprivate to private) |
Swift CoreData Tutorials |
---|
Swift - CoreData - CRUD Operations (Tutorial-1) |
Swift - CoreData - Validations (Tutorial-2) |
Swift - CoreData - To One Relationship (Tutorial-3) |
Swift - CoreData - To One - Inverse Relationship (Tutorial-4) |
Swift - CoreData - To Many - Inverse Relationship (Tutorial-5) |
Method Swizzling Tutorials |
---|
Swift 4, Method initailize defines Objective-C class method initialize(), which is not guaranteed to be invoked by Swift and will be disallowed in future versions |
Swift 4 Method Swizzling (Part 2/2) |
Swift 4 Method Swizzling (Part 1/2) |
NSPredicate Tutorials |
---|
Objective C NSPredicate Part 1/4 |
Objective C NSPredicate Part 2/4 |
Objective C NSPredicate Part 3/4 |
Objective C NSPredicate Part 4/4 |
iOS Fixing Security Vulerabilities Tutorials |
---|
iOS Format String Attacks |
iOS Jailbreak Unchecked File Operation Result Code |
iOS Screen Caching Security Vulnerability |
XMPP Chat Framework Tutorials |
---|
Encoding & Decoding emoji characters In the chat applications using Objective C |
Objective C methods for new user registration in xmpp framework |
Objective-C XMPP search users by username |
Retrieving chat history from Openfire using XMPP |
Displaying emoji characters in UILabel |
Getting old messages or chat history from XMPP |
XMPP searching users by username |
XMPP framework User Registration Methods |
XMPP user change password using Objective C |
Change XMPP registered user password |
Blog Archive |
---|
Custom cell class data source in MVVM design pattern |
Swift - Multiple levels of Optional Binding |
Swift - App is currently in Main Thread or not |
Swift Nil-Coalescing Operator for Optionals |
Enum raw value comparisons |
guard statement return/break/continue |
Case-sensitive and Case-Insensitive sorting |
valueForKey (vs) objectForKey |
If-Let & Guard-Let Multiple Optional Bindings |
Color and Image Literals |
Swift Enums as Models |
Swift convenience initializers |
Tappable links in UITextView |
UITableView Scrolling issue for cells having UITextField/UITextView as subviews |
illegal Configuration Safe Area Layout Guide before iOS 9.0 |
iOS Checking device is in 24 hour format or not |
Displaying URL loading error in WebView in HTML format |
Checking whether iOS app is running in a device having safe area (iPhoneX) or not |
xcodebuild: error: invalid option '-exportFormat' |
Interface Segregation Principle in SOLID (Object-Oriented Design) |
Swift - Handling web links in dynamic content |
Swift - Class and Static Methods |
Swift - MVVM - RXSwift Instead of didSet() |
Swift Failable Initializers |
Objective-C/Swift avoid crashes in iPad in an iPhone Application |
No comments:
Post a Comment