ユーザーがカレンダーへのアクセスを許可したかどうかに関係なく、iOS6 を返すメソッドがあります。
-(NSString *)CheckCalendarAllowed{
__block NSString *AllowCalendar;
EKEventStore *eventStore = [[EKEventStore alloc] init];
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if(granted){
NSLog(@"Event store granted");
AllowCalendar = @"1";
NSLog(@"AllowCalendar in block = %@",AllowCalendar);
}else{
NSLog(@"Event store not granted");
AllowCalendar = @"0";
NSLog(@"AllowCalendar in block = %@",AllowCalendar);
}
}];
NSLog(@"AllowCalendar before return = %@",AllowCalendar);
return AllowCalendar;
}
コンソールでこれを取得します。
2012-12-16 20:48:18.418 22052012_xxxx[4346:907] リターン前の AllowCalendar = (null)
2012-12-16 20:48:18.460 22052012_xxxx[4346:110b] イベント ストアが付与されました
2012-12-16 20:48:18.462 22052012_xxxx[4346:110b] ブロック内の AllowCalendar = 1
すべての requestAccessToEntityType ブロックが完了したときに Return パラメータを呼び出すにはどうすればよいですか?