web-dev-qa-db-ja.com

ユーザーがイベントの開始日より前の終了日を選択した場合の対処法

以下は、iOSのいくつかのToDoアプリがイベントの開始日より前の終了日を処理する方法です。

  • Appleカレンダーアプリは、終了日を過ぎて無効としてマークします。

Apple calendar app


  • Googleカレンダーの赤い終了日

Google calendar app


  • Fantasticalの赤い開始日と終了日

Fantastical


  • Outlook(Sunriseに基づく)は、まったく異なるアプローチを取ります。デフォルトのiOS Date Pickerコントロールは使用しません。イベントが終日イベントの場合、ユーザーにはこの日付ピッカーが表示されます。

Multi-day event

そうでない場合、これはユーザーが開始日と終了日を選択する方法です。

event taking place in the same day

メモのような他のアプリは、開始日よりも大きくなるように終了を自動更新します。

どちらのアプローチが優れていますか?そしてもっと良いものはありますか?

4
ielyamani

一般的に、ソリューションは次のいずれかです。

  • ユーザーに互換性のない日付を選択させる
  • ユーザーに互換性のない日付を選択させない

最初のグループはユーザーに問題を知らせることができます:

  • 開始日を間違っているとしてマークします(画面に表示されませんでした)
  • 終了日を間違っているとマークする
  • 両方の日を間違っているとマーク

2番目のグループには、最初のグループの問題はありません。ただし、システムは次のいずれかを行う必要があります。

  • そもそもこのような非互換性は許されない(これはOutlookの例のようです)
  • ユーザーが編集している間は非互換性を許可しますが、ユーザーがそれを送信して何らかの方法で警告することはできません

私の意見では、「最善のアプローチ」は、システムが単純に不可能であるように設計されているため、ユーザーが間違い/非互換性を最初から犯さない方法です 。これらの施設では、さまざまな解決策が可能だと思います。

5
Alvaro

上記の例から、「取り消し線」または「赤」の意味は、誰にとっても十分に明確ではありません。ユーザーは、日付の何が間違っているのかを理解するのに時間が必要です。それはイライラさせられます。

コネクタを使用した例では、毎日のビューと毎週の毎月のビューを毎回切り替えるのは不快であり、大きな範囲では難しい。

日付ピッカーで過去の選択をブロックすることは、より論理的な方法のようです。間違った日付を編集した場合はクリアされますが、元に戻す機能を使用すると改善される可能性があります。

2
Doc

@Alvaroに同意します。 エラー防止は、 Jakob Nielsenの10のユーザビリティヒューリスティックス の1つです

優れたエラーメッセージよりも優れているのは、最初から問題が発生しないようにする注意深い設計です。エラーが発生しやすい状態を解消するか、それらを確認して、アクションを実行する前に確認オプションをユーザーに提示します。

つまり、開始日の前の日付は、終了日のセレクターで使用できません。このようにして、別のユーザビリティヒューリスティック、つまり再認識に対する認識:

ユーザーは、会話のある部分から別の部分への情報を覚えておく必要はありません。システムの使用手順は、適切な場合はいつでも見えるようにするか、簡単に検索できるようにする必要があります。

つまり、2番目の日付を正しく選択するために、最初の日付を覚えておく必要はありません。

2
Anna Prenzel

私は一緒に行きます

  • 開始日/時間の変更移動イベントを時間で進める/戻す
  • 終了日/時間の変更長さの変更イベントの

これまでに示したすべてのUI実装でこれが可能です。スライダーが最適です。直感的に、長方形をゼロまたは負の長さに縮小することはできません。

私にとって、それは私が実際の出来事についてどのように推論するかによく対応しています。たとえば、カレンダーに2時間のワークアウトを追加したいとします。別のイベントの前に合わせる必要がある場合:

  • 「次の会議の時間に間に合うように、もっと早く開始する必要があります」(イベント全体から開始する)
  • 「間に合うように短くする必要があります」(最後に移動し、イベントの長さを減らします)

そして、後でミーティングを行わない場合は、前にのみ、開始時間が最も重要になります。終了時間はほとんど関係ありません。

0
Alex V.