gpt4 book ai didi

objective-c - 从子类 WebView 更改 Window 的元素可见性

转载 作者:太空狗 更新时间:2023-10-30 03:45:33 25 4
gpt4 key购买 nike

我正在尝试制作一个非常简单的应用程序。它只是一个 super 简单的网络浏览器,只有 3 个页面。 3 个 webview,2 个一直隐藏。

我将 WebView 子类化,以便能够在获得焦点时捕获击键事件。这部分有效。

现在,当我按下 CMD+1、CMD+2、CMD+3(1 将显示第一个 webview,隐藏 2 个,等等)时,我需要回调主页并更改其他 WebView 的可见性。

我试图考虑如何使用委托(delegate)来实现我的目标,但我缺乏知识使我无法完成这个简单的应用程序。

我也听说过 NSNotification,我的 WebView 可以发送一个通知,我的 Window 可以捕捉并改变它的 child 的可见性,但我也不确定如何实现。

谁能给我指出正确的方向?

TLDR; 例如,当一个 WebView 捕捉到 CMD+1 时,我希望能够调用其他 WebView 中的方法来隐藏它们。

谢谢,祝你有美好的一天!

最佳答案

使用通知:说你在哪里捕捉到击键你有一个包含一些 ID 的 NSString 对象来标识所需的 WebView(例如 @"1"@"2" 等),并且每个 Web View 都有一个 viewID 属性。因此,在您收到击键的地方,您将添加:

[[NSNotificationCenter defaultCenter]
postNotificationName:@"ChangeMyActiveWebView"
object:newViewID // <- contains string to identify the desired web view
];

在初始化 Web View 的地方(例如 -awakeFromNib 或 -init),添加以下代码:

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(switchViewNotification:)
name:@"ChangeMyActiveWebView"
object:nil // Means any object
];

然后实现 -switchViewNotification: 方法:

- (void)switchViewNotification:(NSNotification *)aNotification {

NSString *newViewID=[aNotification object];

if([self.viewID isEqualToString:newViewID])
{
// show this web view
}
else
{
// hide this web view
}
}

最后一 block :你需要在 web View 消失时移除观察者,所以将它添加到你的 -dealloc 方法中:

[[NSNotificationCenter defaultCenter]removeObserver:self];

应该这样做。

关于objective-c - 从子类 WebView 更改 Window 的元素可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com