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

我已经在 Google/Stackoverflow 中搜索了关于此的“所有内容”,但我仍然卡住了。我刚刚开始开发 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

欢迎任何帮助,谢谢!

【问题讨论】:

    标签: macos cocoa text webview xcode5


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢杰伊! 〜琐碎〜这个词对于新手来说是不存在的!补充一下:如何强制关闭应用?
    • 不要介意关闭应用程序:[NSApp terminate:self];做这项工作!
    猜你喜欢
    • 2011-09-25
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多