2011-12-20 31 views
-2

搜索的方式來改變UILocalNotification「關閉」按鈕文/功能...可能繼承UILocalNotification並更改默認的「關閉」按鈕文本和方法?

我發現,這是不可能訪問/調用文本/功能從另一個對象雖然子類 UILocalNotification應該允許覆蓋 ...更不用說創建一個訪問獲取/設置「關閉」按鈕文本字段的實現方法。

你們對此有何看法? Apple會怎麼樣?

有沒有人嘗試......

編輯:12/21/2011下午12:01

,我要問的問題涉及到OOP的理解:晚期/早期綁定,動態方法查找,聲明類型與運行時類型字段和方法處理。 UILocalNotification

子類確實工作...

UILocalNotificationExampleSubclass * example = [UILocalNotificationExampleSubclass init];

...和設備確實創建一個對象,但是,與型UILocalNotification而不是UILocalNotificationExampleSubclass

我正在尋找對UILocalNotification.m文件方法的見解。

如果有自己的方法,什麼對象(名稱請)需要UILocalNotification的一個實例,使用其領域,並顯示對象(名稱請)我們在屏幕上看到了什麼?

回答

9

A UILocalNotification只是存儲通知的信息。它沒有執行任何操作。

此外,您的應用程序不顯示通知。另一個過程呢。所以子類UILocalNotification只是沒用。

編輯在12月22日,17:53 UTC + 1:

是的,你也可以繼承UILocalNotification。但是UILocalNotification是一個抽象類,它的所有屬性都沒有實現。 alloc方法被覆蓋,所以它返回一個私有子類UILocalNotification的實例。這就是爲什麼你不能實例化UILocalNotificationExampleSubclass

但儘管如此,有沒有指向子類UILocalNotification因爲當你計劃使用-[UIApplication scheduleLocalNotification:]通知或提出立即用-[UIApplication presentLocalNotification:],操作系統副本通知的通知。

該副本存儲在由系統管理的另一個進程中,該進程使用其自己的專用存儲機制。一個UILocalNotification只是一堆註定要序列化並從應用程序發送到操作系統的屬性的存儲。

現在,我們有另一個存儲所有計劃本地通知並等待通知觸發的進程。當發生這種情況時,該進程將檢查你的應用程序是否在前臺。

  • 如果您的應用程序不在前臺,那個完全不在我們控制範圍內的其他進程將創建警報並顯示通知。除了使用UILocalNotification類的屬性之外,我們無法以任何方式定製該警報。
  • 如果您的應用程序處於前臺,通知將被髮送回應用程序,該應用程序將創建一個新的UILocalNotification實例。然後,UIApplication共享實例將訪問其delegate屬性並檢查該委託是否實現application:didReceiveLocalNotification:。如果確實如此,您會收到通知,並可以使用該通知執行任何操作。例如,您可以選擇使用警報視圖顯示通知。

配置和顯示警報視圖可以做這樣的:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    UIAlertView *alertView = 
    [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Alert", nil) 
           message:NSLocalizedString(notification.alertBody, nil) 
           delegate:nil 
        cancelButtonTitle:nil 
        otherButtonTitles:NSLocalizedString(@"OK", nil), nil]; 
    [alertView show]; 
    [alertView release]; // unless your project uses Automatic Reference Counting 
} 

我希望這不再回應並回答你的問題,如果什麼,我說的是真的

+0

*如果你所說的是真的... * 你知道什麼類需要一個'UILocalNotification'實例來構造我們在屏幕上看到的警報嗎?我希望你能把一些知識放在我身上。在蘋果公開發表的類參考書外尋找一些事實。 – 2011-12-21 15:09:26

+0

如果您的應用程序處於前臺,'UIApplication'的委託可以實現'application:didReceiveLocalNotification:'並顯示自定義警報視圖。如果您的應用程序處於後臺(或未運行),系統將顯示警報,並且您無法更改關閉按鈕的名稱。 – 2011-12-21 16:19:55

+0

感謝您的快速響應,但它不回答我的問題。 – 2011-12-21 17:00:34