0
내 응용 프로그램에 EventEditViewControllerWithEventStore보기를 가져 오는 단추가 있습니다. 사용자가 완료를 누르면 일정이 일정에 추가되고 일정이 추가되면 알림을 표시합니다. 그러나 사용자가 취소했는지 어떻게 알 수 있습니까? 현재로서는 사용자가 완료 또는 취소했는지 여부에 관계없이 알림이 표시됩니다.iOS : 사용자가 이벤트 킷의 "캘린더에 추가"를 취소 했습니까?
이것은 내가 지금까지 무엇을 가지고 :
- (IBAction)addEvent:(id)sender {
EKEventStore *eventStore = [[EKEventStore alloc] init];
if([eventStore respondsToSelector: @selector(requestAccessToEntityType:completion:)]) {
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL permissionGranted, NSError *error) {
if (permissionGranted){
NSLog(@"PERMISSION GRANTED.");
[self performSelectorOnMainThread:@selector(presentEventEditViewControllerWithEventStore:) withObject:eventStore waitUntilDone:NO];
}
else {
NSLog(@"NO PERMISSION.");
[TSMessage showNotificationInViewController:self withTitle:@"Oops! Permission Required" withMessage:@"In order to use this feature, please enable calendar access for this app under settings." withType:TSMessageNotificationTypeWarning withDuration:TSMessageNotificationDurationAutomatic withCallback:nil atPosition:TSMessageNotificationPositionTop];
}
}];
}
else {
// If device is > 6.0
[self presentEventEditViewControllerWithEventStore:eventStore];
}
}
- (void)presentEventEditViewControllerWithEventStore:(EKEventStore*)eventStore
{
EKEventEditViewController *vc = [[EKEventEditViewController alloc] init];
vc.eventStore = eventStore;
EKEvent* event = [EKEvent eventWithEventStore:eventStore];
//Pre-populated Info
event.title = @"Event title";
event.startDate = [NSDate date];
event.endDate = [NSDate date];
event.URL = [NSURL URLWithString:@"http://example.com"];
event.notes = @"Event Notes Can Go Here.";
event.allDay = YES;
event.location = @"Earth";
event.availability = EKEventAvailabilityTentative;
vc.event = event;
vc.editViewDelegate = self;
[self presentViewController:vc animated:YES completion:nil];
}
#pragma EKEventEditViewDelegate
- (void)eventEditViewController:(EKEventEditViewController*)controller
didCompleteWithAction:(EKEventEditViewAction)action {
[controller dismissViewControllerAnimated:YES completion:nil];
[self performSelector:@selector(eventAddedSuccessfully) withObject:nil afterDelay:0.5];
}
#pragma TSMessages
- (void)eventAddedSuccessfully {
NSLog(@"Event was successfully added.");
[TSMessage showNotificationInViewController:self withTitle:@"Success!" withMessage:@"The event was added to your calendar." withType:TSMessageNotificationTypeSuccess withDuration:TSMessageNotificationDurationAutomatic withCallback:nil atPosition:TSMessageNotificationPositionTop];
}
완벽하게 감사드립니다. 나는 단지 하나의 빠른 질문이있다. 사용자가 캘린더에 액세스 할 수있는 권한을 앱에 제공하지 않은 경우 작업을 실행하고 싶습니다. 그러나 NSLog가 작동하는 경우에만 else {} 안에 넣을 때 아무런 문제가 발생하지 않습니다. – KingPolygon
기꺼이 도와 드리겠습니다. 물론, 위의 편집을 참조하십시오! – kushyar
편집 해 주셔서 고맙지 만 문제는 NSLog가 나타나면 else {} 문에서 나타납니다. 그러나 UIAlertView를 배치하면 트리거되지 않습니다. 왜 그런지 알아? else 문에서만, 아무 일도 일어나지 않습니다. – KingPolygon