我正在尝试制作一个非常简单的应用。它只是一个3页的超级简单的Web浏览器。 3 webview,2随时隐藏。
我将WebView子类化,以便能够在聚焦时捕获击键事件。这部分有效。
现在,当我按下CMD + 1,CMD + 2,CMD + 3(1显示第一个webview,隐藏2个其他等)时,我需要回调回家并更改其他WebViews的可见性。
我试着考虑如何使用代表来实现我的目标,但是我缺乏知识使我无法完成这个简单的应用程序。
我也听说过NSNotification,我的WebView可以发送一个通知,我的Window可以捕获并改变其子女的可见性,但我也不确定如何实现。
有人能指出我正确的方向吗?
TLDR; 例如,当WebView捕获CMD + 1时,我希望能够在其他WebView中调用方法来隐藏它们。
谢谢,祝你有愉快的一天!
答案 0 :(得分:1)
使用通知:说明你在哪里捕获键击,你有一个NSString对象包含一些ID来标识所需的WebView(例如@"1"
或@"2"
等),并且每个Web视图都有一个{ {1}}财产。所以在你收到击键的地方,你要加上:
viewID
在初始化Web视图的地方(例如-awakeFromNib或-init),添加以下代码:
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ChangeMyActiveWebView"
object:newViewID // <- contains string to identify the desired web view
];
然后实现-switchViewNotification:方法:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(switchViewNotification:)
name:@"ChangeMyActiveWebView"
object:nil // Means any object
];
最终作品:您需要在网络视图消失后删除观察者,因此请将其添加到您的- (void)switchViewNotification:(NSNotification *)aNotification {
NSString *newViewID=[aNotification object];
if([self.viewID isEqualToString:newViewID])
{
// show this web view
}
else
{
// hide this web view
}
}
方法中:
-dealloc
应该这样做。
答案 1 :(得分:0)
如果我正确理解了您的问题,我认为为了在整个应用中保存小状态,您可以使用NSUserDefaults,这里是Example
我希望我帮助过,最好的运气:)