菜鸟教程小白 发表于 2022-12-13 05:55:41

ios - 将事件添加到 iOS 7 日历


                                            <p><p>在我的应用程序中,我必须向 iOS 7 日历添加一个事件。我在 iOS 6 中制作了一个类似的应用程序,我使用了以下代码:</p>

<p><strong>CalendarUtility.h</strong></p>

<pre><code>#import &lt;EventKit/EventKit.h&gt;
#import &lt;Foundation/Foundation.h&gt;

@interface CalendarUtility : NSObject

- (void)setupEventForCalendarWithEvent:(EKEvent*)event andEventStore:(EKEventStore*)eventStore andCellDateTime:(NSString*) cellDateTime;
- (void)deleteEventFromCalendarWithCellID:(int)cellID;

+ (NSString*)getMonthStringFromMonthNumber:(NSString*)monthNumber;
+ (NSString*)getMonthNumberFromMonthString:(NSString*)monthString;

@end
</code></pre>

<p><strong>CalendarUtility.m</strong></p>

<pre><code>#import &#34;CalendarUtility.h&#34;

@interface CalendarUtility() {
    NSMutableArray *arrayofEventId;
}
@end

@implementation CalendarUtility
- (id)init {
    self = ;
    if (self) {
      arrayofEventId = [init];
    }
    return self;
}

- (void)setupEventForCalendarWithEvent:(EKEvent*)event andEventStore:(EKEventStore*)eventStore andCellDateTime:(NSString*) cellDateTime {
    NSString *dayMonth = ;
    NSString *month = ;

    NSString *dateWithMonthNumber = ] withString:];

    NSDateFormatter *dateFormat = [init];
    ;

    NSDate *date = ;

    event.startDate = date;
    event.endDate = [ initWithTimeInterval:3600 sinceDate:date];
    NSArray *arrAlarm = ];
    event.alarms = arrAlarm;

    ];
    NSError *err;
    ;

    NSString *str = [ initWithFormat:@&#34;%@&#34;, event.eventIdentifier];
    ;
}

- (void)deleteEventFromCalendarWithCellID:(int)cellID {
    EKEventStore* store = [ init];
    EKEvent* eventToRemove;
    NSString *str;
    if (cellID == 0) {
      eventToRemove = ];
      str = [ initWithFormat:@&#34;%@&#34;, eventToRemove.eventIdentifier];
    } else {
      eventToRemove = ];
      str = [ initWithFormat:@&#34;%@&#34;, eventToRemove.eventIdentifier];
    }
    if (eventToRemove != nil) {
      NSError* error = nil;
      ;
    }
}

+ (NSString*)getMonthStringFromMonthNumber:(NSString*)monthNumber {
    if () {
      return @&#34;Gen&#34;;
    }
    if () {
      return @&#34;Feb&#34;;
    }
    if () {
      return @&#34;Mar&#34;;
    }
    if () {
      return @&#34;Apr&#34;;
    }
    if () {
      return @&#34;Mag&#34;;
    }
    if () {
      return @&#34;Giu&#34;;
    }
    if () {
      return @&#34;Lug&#34;;
    }
    if () {
      return @&#34;Set&#34;;
    }
    if () {
      return @&#34;Ott&#34;;
    }
    if () {
      return @&#34;Nov&#34;;
    }
    if () {
      return @&#34;Gen&#34;;
    }
    if () {
      return @&#34;Dic&#34;;
    }
    return @&#34;0&#34;;
}

+ (NSString*)getMonthNumberFromMonthString:(NSString*)monthString {
    monthString = ;
    if () {
      return @&#34;01&#34;;
    }
    if () {
      return @&#34;02&#34;;
    }
    if () {
      return @&#34;03&#34;;
    }
    if () {
      return @&#34;04&#34;;
    }
    if () {
      return @&#34;05&#34;;
    }
    if () {
      return @&#34;06&#34;;
    }
    if () {
      return @&#34;07&#34;;
    }
    if () {
      return @&#34;08&#34;;
    }
    if () {
      return @&#34;09&#34;;
    }
    if () {
      return @&#34;10&#34;;
    }
    if () {
      return @&#34;11&#34;;
    }
    if () {
      return @&#34;12&#34;;
    }
    return 0;
}

@end
</code></pre>

<p>在需要将事件添加到日历的 Controller 中,我使用了以下代码:</p>

<p><strong>向日历添加事件的方法</strong></p>

<pre><code>- (void) addEventToCalendar:(EpisodeCell*)cell andCell:(int)cellID {
    if () {
      EKEventStore *eventStore = [ init];
      if ()
      {
            // the selector is available, so we must be on iOS 6 or newer
            [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
                dispatch_async(dispatch_get_main_queue(), ^{
                  if (error)
                  {
                        NSString *errorMessage = ;
                        UIAlertView *alert = [ initWithTitle:@&#34;InteracTV&#34; message:errorMessage delegate:nil cancelButtonTitle:nil otherButtonTitles:@&#34;OK&#34;, nil];
                        ;
                  }
                  else if (!granted)
                  {
                        UIAlertView *alert = [ initWithTitle:@&#34;InteracTV&#34; message:@&#34;Impossibile accedere al calendario: controlla le impostazioni di privacy&#34;delegate:nil cancelButtonTitle:nil otherButtonTitles:@&#34;OK&#34;, nil];
                        ;
                  }
                  else
                  {
                        // access granted
                        EKEvent *event = ;
                        event.title = cellTitle;

                        if (cellID == 0) {
                            ;

                            ;

                        } else {
                            ;

                            ;
                        }
                  }
                });
            }];
      }
      else
      {
            // this code runs in iOS 4 or iOS 5
            EKEvent *event = ;
            event.title = cellTitle;

            if (cellID == 0) {
                ;

                ;

            } else {
                ;

                ;
            }
      }

//            // PARTE PER iOS &lt; 6 NON IMPLEMENTATO
//      UIAlertView *alert = [ initWithTitle:@&#34;Bitmama iTv&#34; message:@&#34;Aggiorna il dispositivo almeno ad iOS 6 se vuoi aggiungere un evento al calendario.&#34; delegate:nil cancelButtonTitle:nil otherButtonTitles:@&#34;Ok&#34;, nil];
//      ;

    } else {
      ;
      ;
    }
}

- (void)animationForInsertedEventInCalendar {
    ; } completion:^(BOOL finished)
   {
         [UIView transitionWithView:self.imageViewOk
                           duration:0.5 options:UIViewAnimationOptionAllowAnimatedContent
                         animations:^(void){ ; } completion:nil];
   }];
}

- (void)animationForDeletedEventFromCalendar {
    ; } completion:^(BOOL finished)
   {
         [UIView transitionWithView:self.imageViewDelete
                           duration:0.5 options:UIViewAnimationOptionAllowAnimatedContent
                         animations:^(void){ ; } completion:nil];
   }];
}
</code></pre>

<p>当我尝试在我的 iOS 7 新应用程序中使用此代码并使用断点对其进行调试时,它从不执行方法 <code>- (void) addEventToCalendar:(EpisodeCell*)cell andCell:(int)cellID</code>。
这是为什么?我的代码有什么问题?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>对于将事件添加到 native 日历,
包括这两个标题</p>

<pre><code> - #import &lt;EventKit/EventKit.h&gt;
- #import &lt;EventKitUI/EventKitUI.h&gt;
</code></pre>

<p>然后添加这些代码,</p>

<pre><code>EKEventStore *eventStore=[ init];

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
   if (granted)
   {
         EKEvent *event= ;
         NSString * NoteDetails =@&#34;Event detail&#34;;

         NSDate *startDate = ;

         //Create the end date components
         NSDateComponents *tomorrowDateComponents = [ init];
         tomorrowDateComponents.day = 1;

         NSDate *endDate = [ dateByAddingComponents:tomorrowDateComponents
                                                                         toDate:startDate
                                                                        options:0];

         event.title =@&#34;Your Event TITLE&#34;;
         event.startDate=startDate;
         event.endDate=endDate;
         event.notes = appointmentDetail;
         event.allDay=YES;

         ];

         NSError *err;
         ;
   }
   else
   {
         NSLog(@&#34;NoPermission to access the calendar&#34;);
   }

}];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将事件添加到 iOS 7 日历,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21016926/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21016926/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将事件添加到 iOS 7 日历