MBProgressHUD オブジェクトを表示したい - プロセス中の progressHud は、カレンダーに約 100 のイベントを自動追加します。このタスクを実行するためにボタンをタッチしたときのコードは次のとおりです。
- (IBAction)add_event_for_test:(id)sender{
self.progressHud = [[MBProgressHUD alloc] initWithView:self.view];
self.progressHud.labelText = @"Adding some events to test";
self.progressHud.detailsLabelText = @"Please wait...";
[self.view addSubview:self.progressHud];
[self.progressHud showWhileExecuting:@selector(add_more_event_execute:) onTarget:self withObject:nil animated:YES];
}
以下の add_more_event_execute 関数で、EKEntityTypeEvent のエンティティ タイプへのアクセスを要求して、新しいイベントを iOS6 のカレンダーに追加しようとすると、progressHud が表示され、すぐに非表示になります。すべてのイベントがカレンダーに完全に追加されるまで、progressHud を表示する必要があります。私が Access を要求せず、iOS5 で実行すると、progressHud はうまく機能します。
- (void) add_more_event_execute: (id)object{
@autoreleasepool {
eventStore=[[EKEventStore alloc] init];
if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
// iOS 6 and later
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted){
// now add 100 event to calendar
int i = 0;
while (i < 100) {
EKEvent *addEvent=[EKEvent eventWithEventStore:eventStore];
NSString *tmp1 = @"Title iOS6: ";
tmp1 = [tmp1 stringByAppendingString:[NSString stringWithFormat: @" %d",i]];
addEvent.title = tmp1;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit ) fromDate:[NSDate date]];
[components setMonth:0];
[components setDay:i - 50]; //reset the other components
[components setYear:0]; //reset the other components
NSDate *dayi = [calendar dateByAddingComponents:components toDate:[NSDate date] options:0];
addEvent.startDate = dayi;
addEvent.endDate = [addEvent.startDate dateByAddingTimeInterval:600];
[addEvent setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:addEvent span:EKSpanThisEvent error:&err];
if (err == nil) {
NSString* str = [[NSString alloc] initWithFormat:@"%@", addEvent.eventIdentifier];
NSLog(@"String iOS6 %d: %@ ngay:%@ ",i, str,addEvent.startDate);
}
else {
NSLog(@"Error %@",err);
}
i++;
}
}
else
{
//----- codes here when user NOT allow your app to access the calendar.
}
}];
}
}
}
私の問題を説明し、解決策を教えてください。ありがとう!