2013-05-15 3 views
1

Я автоматизирую выбор даты на UIDatePicker с помощью KIF. Я добавил метку доступности и задал цель для сборщика, если дата изменится.UIDatePicker Automation с использованием KIF dateChangedAction не называется

Ссылка: http://bit.ly/140ICwo

+(id) changeDate: (NSDate *) myDate 
{ 

    [s addStep:[KIFTestStep stepToEnterDate:myDate ToDatePickerWithAccessibilityLabel:@"datePicker"]]; 
    [self wait:s timeInSeconds:3]; 
    [s addStep:[KIFTestStep stepToTapViewWithAccessibilityLabel:@"Done" traits:UIAccessibilityTraitButton]]; 
return s; 
} 

- (void) ViewDidLoad 
{ 
    ... 
    datePicker.maximumDate = lastAvailableDate; 
    datePicker.date = (dateValue ? dateValue : [NSDate date]); 
    [datePicker addTarget:self action:@selector(dateChangedAction:) 
    forControlEvents:UIControlEventValueChanged]; 
    self.datePicker.accessibilityLabel = @"datePicker"; 
    self.footerLabel.accessibilityLabel = @"datelabel"; 
} 


- (IBAction)dateChangedAction:(id)sender 
{ 
    [dateValue release]; 
    dateValue = [datePicker.date retain]; 
    dateCell.detailTextLabel.text = [[[self class] sharedFormatter] stringFromDate:dateValue]; 
    [self setDateTitleText:[[[self class] sharedFormatter] stringFromDate:dateValue]]; 
} 

початкоотделяющем вращается и останавливается на указанную дату, однако функция «dateChangedAction» не получает называется, следовательно, метка, которая отображает выбранную дату не получает обновленный.

Если я запускаю приложение без KIF, все работает нормально. Также я попытался вручную выбрать дату при запуске KIF, чтобы проверить, обновляет ли она, но кажется, что пользовательский интерфейс замерзает, и я не могу щелкнуть элементы управления пользовательского интерфейса.

Похоже, проблема связана с этой публикации

http://bit.ly/10xtbqU

Любая помощь очень высоко ценится.

Благодаря

ответ

3

Я бегу в той же проблемой, что вы просто не хватает

[picker sendActionsForControlEvents:UIControlEventValueChanged]; 

, чтобы вызвать dateChangedAction обратного вызова, другими словами попробовать это:

+ (id)stepToEnterDate:(NSDate*)date ToDatePickerWithAccessibilityLabel:(NSString*)label 
{ 
    NSString *description=[NSString stringWithFormat:@"Enter date to Date picker with accessibility label '%@'",[date description]]; 
    return [self stepWithDescription:description executionBlock:^(KIFTestStep *step, NSError **error) 
      { 
       UIAccessibilityElement *element = [[UIApplication sharedApplication] accessibilityElementWithLabel:label]; 
       KIFTestCondition(element, error, @"View with label %@ not found", label); 
       if(!element) 
       { 
        return KIFTestStepResultWait; 
       } 
       UIDatePicker *picker = (UIDatePicker*)[UIAccessibilityElement viewContainingAccessibilityElement:element]; 

       KIFTestCondition([picker isKindOfClass:[UIDatePicker class]], error, @"Specified view is not a picker"); 

       [picker setDate:date animated:YES]; 

       // trigger the UIControlEventValueChanged in case of event listener 
       [picker sendActionsForControlEvents:UIControlEventValueChanged]; 

       return KIFTestStepResultSuccess;   
      }]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^