如何在 Cocoa MacOS Webview 中显示简单的文本消息(toasts/alerts)?

Posted

技术标签:

【中文标题】如何在 Cocoa MacOS Webview 中显示简单的文本消息(toasts/alerts)?【英文标题】:How to show simple text messages (toasts/alerts) in a Cocoa MacOS Webview? 【发布时间】:2014-01-19 06:14:02 【问题描述】:

我已经在 Google/*** 中搜索了关于此的“所有内容”,但我仍然卡住了。我刚刚开始开发 OSX 应用程序,所以我是 Objective-C 和 Xcode 5 (5.0.2) 的(几乎)完整新手。

我只需要一个简单的 webview 来从给定的 URL 加载 webgame。这个 webview 的行为必须像一个非常简单的 Safari 浏览器。我的应用程序已经运行得比较好。它可以正常加载游戏,经过一番挣扎后,我成功地让它显示了 javascript 警报并确认。

要点:我需要向用户显示一条简单的短信,以防检测到没有互联网连接,然后我需要关闭应用程序。这似乎是一件很微不足道的事情,但我找不到办法做到这一点!

那是我的 appDelegate.M:

    #import "AppDelegate.h"

    @implementation AppDelegate

    @synthesize myWebView;


    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    
        // Insert code here to initialize your application

// Check if there's internet connection:
#include <SystemConfiguration/SystemConfiguration.h>
static BOOL internetOk()

BOOL returnValue = NO;

struct sockaddr zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sa_len = sizeof(zeroAddress);
zeroAddress.sa_family = AF_INET;

SCNetworkReachabilityRef reachabilityRef = SCNetworkReachabilityCreateWithAddress(NULL, (const struct sockaddr*)&zeroAddress);

if (reachabilityRef != NULL)

    SCNetworkReachabilityFlags flags = 0;

    if(SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
    
        BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0);
        BOOL connectionRequired = ((flags & kSCNetworkFlagsConnectionRequired) != 0);
        returnValue = (isReachable && !connectionRequired) ? YES : NO;
    

    CFRelease(reachabilityRef);


return returnValue;


// -

if(internetOk())

    [self.window setContentView:self.myWebView];

    [self.window toggleFullScreen:@""];

    [self.myWebView setMainFrameURL:@"http://www.mywebgameurl.com"];

else

    // SHOWS ERROR MESSAGE AND CLOSES APP! HOW CAN I DO IT????


    


    @end

欢迎任何帮助,谢谢!

【问题讨论】:

【参考方案1】:

您正在寻找 NSAlert 类,请查看 here 以获取 Apple 文档。 示例用法:

NSAlert* alert = [NSAlert alertWithMessageText:@"Internet Error" 
                 defaultButton:nil 
                 alternateButton:nil 
                 otherButton:nil 
                 informativeTextWithFormat:@"No internet."];  

[alert runModal];  

【讨论】:

非常感谢杰伊! 〜琐碎〜这个词对于新手来说是不存在的!补充一下:如何强制关闭应用? 不要介意关闭应用程序:[NSApp terminate:self];做这项工作!

以上是关于如何在 Cocoa MacOS Webview 中显示简单的文本消息(toasts/alerts)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS 上的 Cocoa 中显示警报弹出窗口?

在 Cocoa macOS 应用程序中,如何获取 MKMapView 左下角的度数坐标?

MacOS应用cocoa application问题

在 macOS/Cocoa 应用程序中启动 GCDWebServer 会冻结应用程序

使用 WebView 将 HTML 加载到 Cocoa 应用程序中并更改文本

MacOS 上的 Qt/Cocoa - 移除进度条动画