I have developed a website in Twitter Bootstrap, I am now using a UIWebView to display that site inside of an IOS app. I am getting it to display fine, but the screen is off and it is running off of the side of the screen... I feel like I might have my UIWebView configured wrong, the site looks like if I go to it in Safari on my mobile device, so I know the site is working properly.
It even displays Google wrong in the UIWebView.... I will display my code and 2 screen shots below(The first screenshot is what it currently looks like, the second is what it should look like and what it looks like in safari mobile :
ViewController.h
#import <UIKit/UIKit.h>
#interface ViewController : UIViewController
#property (strong, nonatomic) IBOutlet UIWebView *webView;
#end
ViewController.m
#import "ViewController.h"
#interface ViewController ()
#end
#implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:#"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
_webView.scalesPageToFit = YES;
_webView.frame=self.view.bounds;
[_webView loadRequest:request];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#end
AS-IS Screen Shot
TO-BE Screen Shot
No need to use loadRequest: two time, Use:
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[_webView reload];
}
To me it looks like the UIWebView is not set up correctly in the Storyboard or Interface Builder. Do you use Auto Layout? If so, are the constraints set correctly?
A simple way to make sure the UIWebView is displayed full screen would be to add 4 constraints that align it with the top, bottom, leading and trailing edges of its superview, e.g. like so:
EDIT: Here are some rough instructions on how to add those constraints.
You should add the following code after [_webView loadRequest:request]; :
_webView.scalesPageToFit = YES;
and If your UIWebView is not located properly, add the following code too :
_webView.frame=self.view.bounds;
In the Utilities pane, select "Scales Pages to Fit":
In the view controller in which the web view resides, make sure you can view the boxes (or bounds) of the view (note: the bottom doesn't appear because I couldn't fit it within the image):
Code in view controller:
#import "SomeViewController.h"
#interface SomeViewController ()
#end
#implementation SomeViewController
#synthesize webView;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSString *urlLink = #"www.google.com";
NSURL *url = [NSURL URLWithString:urlLink];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:urlRequest];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
Photo of the other settings in the view controller:
Related
I have an important question. I'm creating an iPhone app.
I have an UIWebView (https://www.google.de/) with goBack, goForward and reload.
Now, I want a Button e.g. Bar Button Item named Home or Homepage, to open an URL (https://www.google.de/) in this WebView, to go back to the homepage.
How can I do this? How can I "say" the button to open the link in my WebView? I ask for answer.
// ViewController.h
#import <UIKit/UIKit.h>
#interface ViewController : UIViewController
#property (nonatomic, strong) IBOutlet UIWebView *site ;
#end
// ViewController.m
#import "ViewController.h"
#interface ViewController ()
#end
#implementation ViewController
-(IBAction)refresh:(id)sender; {
NSURL *url=[NSURL URLWithString: #"https://www.google.de/"]; NSURLRequest * requestURL=[NSURLRequest requestWithURL:url]; [_site loadRequest:requestURL];
}
- (void)viewDidLoad {
[self refresh:self];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#end
UIWebView has methods, goBack and goForward. You can make actions and bind it with your bar buttons to go back and forward whenever you want.
- (IBAction)goBack:(id)sender {
[_site goBack];
}
- (IBAction)goForward:(id)sender {
[_site goForward];
}
- (IBAction)goHomepage:(id)sender {
NSURL *url=[NSURL URLWithString: #"https://www.google.de/"];
NSURLRequest *requestURL=[NSURLRequest requestWithURL:url];
[_site loadRequest:requestURL];
}
To help you more, here's a tutorial on this, and if you don't want to read that tutorial, you can check their source code from here !
I am trying to load a series of urls based on the contents of my database i.e: http://www.whatever.com but when I run the app in the simulator nothing appears, my code reads as follows
.h file (imports statements excluded)
#interface FSFourthScreenViewController : UIViewController
//insert code to create web view
{
NSString * urlString;
UIWebView * FSWebView;
}
// properties
#property (nonatomic, retain) NSString * urlString;
#property (nonatomic, retain) IBOutlet UIWebView * FSWebView;
#end
.m file import statements excluded
#interface FSFourthScreenViewController ()
#end
#implementation FSFourthScreenViewController
#synthesize FSWebView, urlString;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//background image
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:#"backgroundimage.png"]];
NSURL * url = [NSURL URLWithString:urlString];
NSURLRequest * requestObj = [NSURLRequest requestWithURL:url];
[FSWebView loadRequest:requestObj];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#end
I have wired the webview correctly, and assigned the right field in the database. I also cleaned out xCode and the simulator, but still no joy... any ideas welcome?
add this code ,check your objects:
- (void)viewDidLoad
{
[super viewDidLoad];
//background image
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:#"backgroundimage.png"]];
NSURL * url = [NSURL URLWithString:urlString];
if (!url)
{
NSLog(#"url is nil!!!");
}
NSURLRequest * requestObj = [NSURLRequest requestWithURL:url];
if (!FSWebView)
{
NSLog(#"RSWebView is nil!!!");
}
[FSWebView loadRequest:requestObj];
}
i guess the url is nil ,or the webview is nil
Try it,
[self.FSWebView loadRequest:requestObj];
Set the urlString. In the code you provided, the urlString is never set, so the URL you create with it cannot be loaded.
You can follow this tutorial :
http://mrudulajampala.blogspot.ca/2012/10/uiwebview-tutorial.html
And you find its source code here:
https://sites.google.com/site/iphonesdktutorials/sourcecode/UIWebViewTutorialPart1.zip?attredirects=0
Hopefully it will help you out.
If your project is iOS6 and abrove you can use this tool the web inspector to be sure that the web page is loading without any error.
You can follow this tutorial :
http://moduscreate.com/enable-remote-web-inspector-in-ios-6/
i hope it will help you to find the problem
Your code is correct. But your urlString is null . That is why it is not showing anything.
you just add an an url , and then test for it
As I see you havent UIWebViewDelegate in your FSFourthScreenViewController.h. You need to add it and to add its delegate WebView methods to your FSFourthScreenViewController.m
Check documentation for more details of UIWebViewDelegate :
Documentation
Add
<UIWebViewDelegate> in your view controller
self.FSWebView.delegate=self;
NSURL* url = [NSURL URLWithString:#"http://i.wrightscs.com"]; //replace your string here
[self.FSWebView loadRequest:[NSURLRequest requestWithURL:url]];
Hope it helps you...
when i build my apps with one page the code works fine, but when i use more than one view the app will not display the webpage, evan tough i am using identical code
in view controller.h i have this code
#import <UIKit/UIKit.h>
#interface ViewController : UIViewController{
IBOutlet UIWebView *webview;
}
#end
in view controlled.m i have this code
#import "ViewController.h"
#interface ViewController ()
#end
#implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:#"http://www.twitter.com/GeekyLemon"]]];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#end
now this code works fine and is the same in the other project yet the one with multiple views won't work.
Have you checked these points :
have you set the controller as a WebViewDelegate ?
Did you linked the webview from storyboard to your IBOutlet in controller ?
When you're debugging, is the instance of your webview different from nil ?
Its hard to fix your issue without a detailed description, but try to add this method into .m file. :
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:#"http://www.twitter.com/GeekyLemon"]]];
}
and from viewDidLoad remove this line : [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:#"http://www.twitter.com/GeekyLemon"]]];
viewDidLoad is invoking only once I suppose that this issue apper when you go to other ViewController and then go back.
Im having some problems with showing an imagelink on ios webbView. What's happening is that I've put down a webView in my xib file and connected it with outlet but i stil can't get the image to show up..
The code in ViewController.m
#import "ViewController.h"
#interface ViewController ()
#end
#implementation ViewController
- (void)viewDidLoad {
NSString *urlLink = #"http://www.novasoftware.se/ImgGen/schedulegenerator.aspx?format=png&schoolid=90645/sv-se&type=1&id={FDCE3A18-B5F6-45F4-B9B2-EA9171290F71}&period=&week=41&mode=0&printer=0&colors=32&head=0&clock=0&foot=0&day=0&width=844&height=629&maxwidth=844&maxheight=629";
//Create a URL object.
NSURL *url = [NSURL URLWithString:urlLink];
//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//Load the request in the UIWebView.
[self.webView loadRequest:requestObj];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#end
If someone could figure out what the problem is i'd be grateful!
Best regards Oliver
http://www.novasoftware.se/ImgGen/schedulegenerator.aspx?format=png&schoolid=90645/sv-se&type=1&id={FDCE3A18-B5F6-45F4-B9B2-EA9171290F71}&period=&week=41&mode=0&printer=0&colors=32&head=0&clock=0&foot=0&day=0&width=844&height=629&maxwidth=844&maxheight=629
This is not a direct link to an image. That's probably your issue. Try using a normal image link like this https://www.google.com/images/srpr/logo3w.png and it should show up.
I'm new for iOS develop. I tried to make a very simple app just show a UIWebView which display a web page:
ViewController.m:
#import "ViewController.h"
#implementation ViewController
#synthesize webView = _webView;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *urlAddress = #"http://jsfiddle.net/emj365/qaQnF/embedded/result/";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
}
...
ViewController.h
#import <UIKit/UIKit.h>
#interface ViewController : UIViewController {
UIWebView * _webView;
}
#property (nonatomic, retain) IBOutlet UIWebView * webView;
#end
UIWebView show blank. What's wrong?
There are a few different things that could go wrong. A few options you should check:
Did you check to see if the outlet was actually connected to the webview in the xib?
Implement the UIWebView delegate and check for (networking) errors