使用MonoMac以编程方式在窗口中的WebView中显示网页

时间:2016-01-15 09:32:12

标签: c# webview xamarin webkit monomac

我真的不想在这里问这个问题,因为在我看来这应该是非常基本和简单的,但是在昨天之间搜索几个小时之后,我无法在网上找到任何好的例子。还有今天。所以,这里是:

我正在尝试使用OAuth 2.0身份验证的API。为了进行身份验证,我尝试打开一个包含网页的窗口,供用户授予对应用程序的访问权限。出于某种原因,我认为这就像创建一个新的NSWindow和WebView,将窗口的内容设置为WebView,并加载页面URL一样简单;但是,当我运行它时,窗口打开,但从不显示任何内容。我尝试使用autolayout约束,认为webview可能没有正确定位,但这也不起作用。我把它们从下面的代码中取出来了。我试图以xibless的方式做到这一点。以下是我的代码:

using AppKit;
using Foundation;
using CoreGraphics;
using WebKit;

namespace SampleApplication.Mac
{
    [Register ("AppDelegate")]
    public class AppDelegate : NSApplicationDelegate
    {
        public AppDelegate ()
        {
        }

        public override void DidFinishLaunching (NSNotification notification)
        {
            var window = new NSWindow (new CGRect (0, 0, 100, 100), NSWindowStyle.Borderless, NSBackingStore.Buffered, false);
            var webview = new WebView();
            webview.Frame = new CGRect (0, 0, 100, 100);
            window.ContentView = webview;
            webview.MainFrame.LoadRequest(new NSUrlRequest (new NSUrl ("https://google.com")));
        }

        public override void WillTerminate (NSNotification notification)
        {
            // Blah
        }
    }
}

我以前做过一些Mac开发,但是我从未使用过WebKit,所以我可能会在某处失去一些理解。任何帮助将不胜感激,因为关于此的文档不​​是很好。

1 个答案:

答案 0 :(得分:0)

嗯,事实证明问题根本与WebView无关。我对此感到非常愚蠢,但是显示的窗口是我创建项目时使用的Cocoa应用程序模板的默认窗口。我试图制作的窗口根本没有显示出来!我觉得尺寸看起来很奇怪。

为了解决这个问题,我只需在实例化窗口后执行以下操作:

window.MakeKeyAndOrderFront(null);

完成此操作后,显示的窗口和网页按预期加载。