2013-05-27 86 views
6

我試圖製作一個非常簡單的應用程序。這只是一個超級簡單的3頁網頁瀏覽器。 3 webview,2隱藏在任何時間。從子類WebView中更改窗口的元素可見性

我的子類的WebView能夠捕捉按鍵事件而聚焦。這部分工作。

現在我需要回調家庭和改變其他網頁視圖的知名度,當我按CMD + 1,CMD + 2,CMD + 3(1將顯示第一web視圖,隱藏2種人等)。

我試着去思考如何使用委託來實現我的目標,但我的知識缺乏的是不讓我完成這個簡單的應用程序。

我也聽說過NSNotification,我的WebView可以發送我的窗口能趕上並改變其對兒童的關注通知,但我不知道如何實現這樣無論是。

任何人都可以點我在正確的方向嗎?

TLDR;例如,當WebView捕獲CMD + 1時,我希望能夠調用其他WebView中的方法來隱藏它們。

感謝,並有一個愉快的一天!

+0

對不起,但你的問題不夠具體。你基本上是問如何顯示或隱藏視圖?正確的方向是做一些關於AppKit的閱讀。 https://developer.apple.com/library/mac/navigation/#section=Resource%20Types&topic=Getting%20Started –

+0

例如,當WebView捕獲一個CMD + 1時,我希望能夠調用其他方法WebViews隱藏它們。這就是我想要做的。對不起,如此模糊,謝謝你的迴應! – TomShreds

回答

1

使用通知:說,你抓住你有一些含有ID來識別期望的web視圖(例如@"1"@"2"等)一個NSString對象的關鍵筆劃,並且每幅視圖具有viewID屬性。那麼,您收到的擊鍵,你要補充:

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

的地方在那裏你的Web視圖進行初始化(例如-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 
    } 
} 

最後一塊:你需要在Web視圖消失刪除觀察者,所以將它添加到您的-dealloc方法:

[[NSNotificationCenter defaultCenter]removeObserver:self]; 

這應該做到這一點。

0

,如果我理解正確你的問題我認爲對於整個應用程序節能小國,你可以使用NSUserDefaults的,這裏是一個Example

我希望我幫助,祝您好運:)的

+0

哦,我想我真的錯誤地解釋了我的問題。例如,當WebView捕獲到CMD + 1時,我希望能夠調用其他WebView中的方法來隱藏它們。在某種程度上,我可以用你告訴我的話來做到這一點。我會嘗試一下:P感謝您的答案! – TomShreds