質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2039閲覧

EKEvent.isAlldayをtrueにしても、終日フラグがOFFの状態でイベント登録画面が表示される

dsuzuki

総合スコア1682

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/03/19 02:25

前提・実現したいこと

終日フラグをONの状態で、イベント登録画面を表示したい。

発生している問題・エラーメッセージ

EKEvent.isAllDay にtrueを設定しても、終日フラグがOFFの状態でイベント登録画面が表示されます。

swift

1class CustomViewController: MFMailComposeViewControllerDelegate, EKEventEditViewDelegate, UINavigationControllerDelegate { 2 3 private let eventStore: EKEventStore = EKEventStore() 4 5 func openCalendarView(title: String, location: String?, allDayFlag: Bool, startDate: Date?, endDate: Date?, notes: String?, timezone: TimeZone) { 6 7 event.isAllDay = allDayFlag // trueをコーディングしても、 8 event.title = title 9 event.location = location ?? "" 10 if let start = startDate { 11 if allDayFlag { 12 let dateCompStart = Calendar.current.dateComponents([.year, .month, .day], from: start) 13 let dateCompEnd = Calendar.current.dateComponents([.year, .month, .day], from: endDate!) 14 let eventDateStart = Calendar.current.date(from: dateCompStart) 15 let eventDateEnd = Calendar.current.date(from: dateCompEnd) 16 event.startDate = eventDateStart 17 event.endDate = eventDateEnd 18 } else { 19 event.startDate = startDate 20 event.endDate = endDate 21 } 22 } 23 event.notes = notes 24 event.timeZone = timezone 25 event.calendar = self.eventStore.defaultCalendarForNewEvents 26 dump(event) // allDay = 0;となっている。 27 28 let eventController = EKEventEditViewController() 29 eventController.delegate = self 30 eventController.event = event 31 eventController.editViewDelegate = self 32 eventController.eventStore = self.eventStore 33 self.present(eventController, animated: true, completion: nil) 34 }

試したこと

isAllday、startDateの設定順序を変える。
startDate, endDateの設定内容を変える。

補足情報(FW/ツールのバージョンなど)

プロジェクト設定
iOS 11.0
swift 4.0
Info.plist : Privacy - Calendars Usage Description

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

timezoneを設定したタイミングでisAlldayのフラグが変わるため、
event.timeZone = timezoneを、event.isAllDayの前に設定する。

投稿2018/03/19 02:27

dsuzuki

総合スコア1682

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問