C# iphone MontTouch UIWebView 的使用

想学用C#开发iphone 的就加入 QQ群:178290571 ,让我们共同进步吧!

C# MonoTouch for iphone 开发blog  http://blog.csdn.net/ssihc0/

MonoDevelop 版本:2.8.0

MonoTouch 版本:4.2.2


UIWebView 控件是一个浏览器控件,和我们在windows 下的 webBrower一样。

刚用的属性:

   LoadRequest: 加载你要显示的html

下面是方法和属性:


新建一个工程名为WebView 打开WebViewViewController


添加一个UITextField ,三个UIButton,还有一个UIWebView

添加下面代码:

public partial class webViewViewController : UIViewController
	{
		UIWebView webview;
		UIButton button1,button2,button3;
		UITextField textfield;
		public webViewViewController (string nibName, NSBundle bundle) : base (nibName, bundle)
		{
		}
		
		public override void DidReceiveMemoryWarning ()
		{
			// Releases the view if it doesn't have a superview.
			base.DidReceiveMemoryWarning ();
			
			// Release any cached data, images, etc that aren't in use.
		}
		
		public override void ViewDidLoad ()
		{
			base.ViewDidLoad ();
			button1= UIButton.FromType(UIButtonType.RoundedRect);
			button2= UIButton.FromType(UIButtonType.RoundedRect);
			button3= UIButton.FromType(UIButtonType.RoundedRect);
			textfield= new UITextField();
			
			button1.Frame=new System.Drawing.RectangleF(UIScreen.MainScreen.Bounds.Width-70f,5f,60f,30f); 
			button1.SetTitle ("GO",UIControlState.Normal); 
			textfield.Frame= new RectangleF (10f,5f,UIScreen.MainScreen.Bounds.Width-70f-10f,30f);
			textfield.BorderStyle= UITextBorderStyle.RoundedRect;
			button2.Frame= new  RectangleF(10,textfield.Frame.Top+ textfield.Frame.Height+5,90f,30f );
			button3.Frame= new RectangleF (button2.Frame.Width+10 +5 ,button2.Frame.Top,90f,30f);
			
			button2.SetTitle("<Back",UIControlState.Normal);
			button3.SetTitle("Forward>",UIControlState.Normal);
			
			webview= new UIWebView();
			webview.Frame= new RectangleF(0,button3.Frame.Top+button3.Frame.Height+5,UIScreen.MainScreen.Bounds.Width,UIScreen.MainScreen.Bounds.Height-(button3.Frame.Top+button3.Frame.Height+5));
		    this.View.AddSubviews(button1,textfield,button2,button3,webview);
			
			button1.TouchUpInside += delegate {
				webview.LoadRequest( new NSUrlRequest(new NSUrl (textfield.Text)));
				textfield.ResignFirstResponder();
			};
			webview.LoadStarted+= delegate {
				UIApplication.SharedApplication.NetworkActivityIndicatorVisible=true;
				textfield.Text=webview.Request.Url.AbsoluteString;
			};
			webview.LoadFinished +=delegate{
				UIApplication.SharedApplication.NetworkActivityIndicatorVisible=false;
				button2.Enabled=webview.CanGoBack;
				button3.Enabled=webview.CanGoForward;
			};
			webview.LoadError  += delegate (object sender,UIWebErrorArgs e)
			{
				button2.Enabled=webview.CanGoBack;
				button3.Enabled=webview.CanGoForward;
				 UIApplication.SharedApplication.NetworkActivityIndicatorVisible=false;	
				var alert= new UIAlertView("webView Error",e.Error.LocalizedDescription,null,"OK",null);
				alert.Show() ;
			};
			
			button2.TouchUpInside +=delegate
			{
				webview.GoBack();
				textfield.Text=webview.Request.Url.AbsoluteString;
			};
			button3.TouchUpInside+=delegate
			{
				webview.GoForward();
				textfield.Text=webview.Request.Url.AbsoluteString;
			};
			//any additional setup after loading the view, typically from a nib.
		}
		
		public override void ViewDidUnload ()
		{
			base.ViewDidUnload ();
		
		//	this.View.AddSubview(textfield);
			// Release any retained subviews of the main view.
			// e.g. myOutlet = null;
		}
		
		public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
		{
			// Return true for supported orientations
			return (toInterfaceOrientation != UIInterfaceOrientation.PortraitUpsideDown);
		}
	}

代码分析:

   添加控件我们还是放在ViwDidLoad 里实现。

button1.Frame=new System.Drawing.RectangleF(UIScreen.MainScreen.Bounds.Width-70f,5f,60f,30f);
UIScreen.MainScreen.Bounds 存放在现在的iphone view 的大小,一般可以认为他是(480,320);

textfield.BorderStyle= UITextBorderStyle.RoundedRect; 指定了样式,如果没有指定,他会变成透明

下图。RoundedRect的结果等会我们看这个程序的运行结果。

button1.TouchUpInside += delegate {
                webview.LoadRequest( new NSUrlRequest(new NSUrl (textfield.Text)));
                textfield.ResignFirstResponder();
            };

new NSUrl (textfield.Text) 把textbox输入进来的string 实例 华成 NSurl。

new NSUrlRequest 这个是实现在网络数据的取回

webview.LoadRequest  加载NSUrlRequest返回后的数据。

textfield.ResignFirstResponder(); 是放弃第一响应对象。这将会使用键盘无效(自动隐藏)。

UIApplication.SharedApplication.NetworkActivityIndicatorVisible=true; 是系统栏上的小菊花。

button2.Enabled=webview.CanGoBack; CanGoBack测试 goBack 可不可用。

button3.Enabled=webview.CanGoForward;CanGoForward测试GoForward可不可用。


var alert= new UIAlertView("webView Error",e.Error.LocalizedDescription,null,"OK",null);
                alert.Show() ; 是一个提示窗口,,和以前的messagebox差不多。

GoBack();返回导肮历史中的前一个地址。

GoBack(); 回到前一个地址;

LoadStarted 事件。是刚开请求网络的时候调用。

LoadStarted  事件。请求网络 结束的时候调用。

运行结果:



源代码:

下载

下载后把gif 改成zip




阅读更多
上一篇C# iphone MontTouch UIPageControl 的使用
下一篇C# iphone MontTouch UIScrollView 的使用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭