如何在 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)?的主要内容,如果未能解决你的问题,请参考以下文章
在 Cocoa macOS 应用程序中,如何获取 MKMapView 左下角的度数坐标?
在 macOS/Cocoa 应用程序中启动 GCDWebServer 会冻结应用程序