Проверьте правильное время в тревоге - PullRequest
0 голосов
/ 25 марта 2012

Извините, Google Translate делает ошибку, ко многим ошибкам,

Я хочу сделать будильник в XCode, но у меня есть проблема, все работает хорошо, если я использую вид сборщика с датой и временем, но если япереключить вид сборщика в одно только время, невозможно установить будильник, потому что, если я установил будильник в момент времени, прежде чем немедленно позвонить,

как я могу решить, не используя вид сборщика с датой?

Это действие, которое устанавливает будильник.

PS Извините за превью сообщение, может быть, мой английский лучше, чем Google Translate ...

  // Set Allarm Uno

-(IBAction)setAlarmUno:(id)sender{

NSLog(@"In Alarm Date");
NSDateFormatter *formatter =
[[[NSDateFormatter alloc] init] autorelease];
NSLog(@"About to Set Date");
AlarmDateUno = [alarmDatePickerUno date];
[formatter setTimeStyle:NSDateFormatterShortStyle];
isAlarmUnoOn = 1;


// Setta la label della data con l'orario

NSString *notifyTime = [[NSString alloc]initWithString:[formatter stringFromDate:AlarmDateUno]];
NSMutableString *alarmString = [[NSMutableString alloc]initWithString:@""];
NSString *temp = [[NSString alloc] initWithString:[formatter stringFromDate:AlarmDateUno]];
[alarmString appendString:temp];
[LabelalarmUno setText:alarmString];


    if(clicked == 0) 
        {            
            clicked =1;
            [btOnOffUno  setImage:[UIImage imageNamed:@"OnBtn.png"] forState:UIControlStateNormal];
                bellOne.hidden = NO;

             }

    else 
        { 
            clicked = 0;
            [btOnOffUno  setImage:[UIImage imageNamed:@"OffBtn.png"] forState:UIControlStateNormal];
                bellOne.hidden = YES; 
                isAlarmUnoOn = 0;

Для объединения временипосле установки будильника я использую это:

   // CONTROLLO TEMPO UNO

   - (void)runTimerUno {

            myTickerUno = [NSTimer scheduledTimerWithTimeInterval: 0.5
                                            target: self
                                          selector: @selector(showActivityUno)
                                          userInfo: nil
                                           repeats: YES];

     }

  - (void)showActivityUno {
  NSDateFormatter *formatter =
        [[[NSDateFormatter alloc] init] autorelease];
NSDate *date = [NSDate date];

if(isAlarmUnoOn == 1 && AlarmUnoPlaying ==0){
    NSLog(@"Going to compare times Uno");
    NSDate *d = [date earlierDate:AlarmDateUno];
    NSLog(@"Compared Times Uno");


    if (d == date) {
        NSLog(@"Current time earlier Uno");
    } 
    else if (d == AlarmDateUno) {
        AlarmUnoPlaying = 1;

        [self playAlarmSoundUno];
    }               

}
[formatter setTimeStyle:NSDateFormatterMediumStyle];  

}

Я пытаюсь интегрировать ваш код в мой без успеха.

1 Ответ

1 голос
/ 25 марта 2012

Это добавит время от средства выбора к текущей дате, а затем добавит один день, если время в прошлом, так что будильник всегда в будущем:

AlarmDateUno                = [alarmDatePickerUno date];
NSCalendar *currentCalendar = [NSCalendar currentCalendar]; 

// Get the current date & time, and modify it to the beginning of the day (midnight).
NSDate *currentDate = [NSDate date];
NSDateComponents *currentDateComponents = [currentCalendar components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:currentDate];
currentDate = [currentCalendar dateFromComponents:currentDateComponents];

// Add the time  from the picker to the currentDate (midnight value) to give us today's date with the picker time.
AlarmDateUno = [currentDate dateByAddingTimeInterval:[AlarmDateUno timeIntervalSinceReferenceDate]];

// Now, if AlarmDateUno is before the current time, assume that we mean tomorrow and add one day:
if ([currentDate compare:AlarmDateUno] == NSOrderedAscending) {
    // Add one day to the current alarm time.
    NSDateComponents *oneDay = [[NSDateComponents alloc] init];
    [oneDay setDay:1];
    AlarmDateUno = [currentCalendar dateByAddingComponents:oneDay toDate:AlarmDateUno options:0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...