2011-12-20 33 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