1

他の繰り返し間隔は正常に機能しますが、通知を 1 時間ごとに繰り返すように設定し、タイマーがオフになると、アプリがフリーズし、すべてのローカル通知をクリアするまでアプリを再度開くことができません。

switch(repeatType) {
            case kRepeatHourly:
                notif.repeatInterval = NSHourCalendarUnit;
                break;
            case kRepeatDaily:
                notif.repeatInterval = NSDayCalendarUnit;
                break;
            case kRepeatWeekly:
                notif.repeatInterval = NSWeekCalendarUnit;
                break;
            case kRepeatMonthly:
                notif.repeatInterval = NSMonthCalendarUnit;
                break;
            case kRepeatAnnually:
                notif.repeatInterval = NSYearCalendarUnit;
                break;
            default:
                break;
        } 
4

1 に答える 1

0
- (void)scheduleNotification {

    [reminderText resignFirstResponder];
    [[UIApplication sharedApplication] cancelAllLocalNotifications];

    Class cls = NSClassFromString(@"UILocalNotification");
    if (cls != nil) {

        UILocalNotification *notif = [[cls alloc] init];
        notif.fireDate = [datePicker date];
        notif.timeZone = [NSTimeZone defaultTimeZone];

        notif.alertBody = @"Did you forget something?";
        notif.alertAction = @"Show me";
        notif.soundName = UILocalNotificationDefaultSoundName;
        notif.applicationIconBadgeNumber = 1;

        NSInteger index = [scheduleControl selectedSegmentIndex];
        switch (index) {
            case 1:
                notif.repeatInterval = NSMinuteCalendarUnit;
                break;
            case 2:
                notif.repeatInterval = NSHourCalendarUnit;
                break;
            case 3:
                notif.repeatInterval = NSDayCalendarUnit;
                break;
            case 4:
                notif.repeatInterval = NSWeekCalendarUnit;
                break;
            default:
                notif.repeatInterval = 0;
                break;
        }

        NSDictionary *userDict = [NSDictionary dictionaryWithObject:reminderText.text
                                                forKey:kRemindMeNotificationDataKey];
        notif.userInfo = userDict;

        [[UIApplication sharedApplication] scheduleLocalNotification:notif];
        [notif release];
    }
}

詳細については、ソース コード フォームの参照リンクをここからダウンロードしてください。

于 2013-02-14T13:48:16.147 に答える