UIDatePicker

Panther·2021년 9월 25일
0

https://developer.apple.com/documentation/uikit/uidatepicker

"A control for the inputting of date and time values."

날짜 및 시간 값 입력을 위한 컨트롤입니다.

Declaration

@MainActor class UIDatePicker : UIControl

Overview

사용자가 시간(달력 날짜, 시간 값, 혹은 모두) 혹은 시간 인터벌(예를 들어 타이머의 경우)을 입력할 수 있도록 하기 위해 데이트 피커를 사용할 수 있습니다. 데이트 피커는 관련 타깃 객체에 상호작용에 대한 정보를 알려줍니다.

인터페이스에 데이트 피커를 추가하려면 아래처럼 해야 합니다.

  • 생성 시점에 데이트 피커 모드를 설정합니다.
  • 필요한 경우 최소, 최대 날짜와 같은 추가적인 설정 옵션을 제공해야 합니다.
  • 데이트 피커에 액션 메소드를 연결해야 합니다.

인터페이스에서 데이트 피커의 위치를 제어하기 위해 오토 레이아웃 규칙을 설정해야 합니다.

시간 및 날짜 선택 처리에 대해서만 데이터 피커를 사용할 수 있습니다. 리스트로부터 임의의 아이템을 선택하는 것을 처리하려면 UIPickerView 객체를 사용하시기 바랍니다.

Configure a Date Picker

datePickerMode 속성은 데이트 피커의 설정을 결정합니다. 코드 작성 혹은 인터페이스 빌더를 통해 datePickerMode 값을 설정할 수 있습니다. 날짜 혹은 시간 값을 포함하는 모드의 경우 로케일, 달력, 시대 정보를 설정할 수도 있습니다. 데이트 피커는 현재 사용자에 대해 날짜 및 시간 값을 형식화할 때 해당 정보를 사용하며, 기기의 로케일, 달력, 시간대 영역의 기본값을 사용합니다. 데이트 속성은 달력 및 시간대 영역에 상관없는 NSDate 객체의 형식으로 현재 선택된 날짜를 나타냅니다.

사용자가 선택할 수 있는 날짜의 범위를 제한하려면 minimumDatemaximumDate 속성에 값을 할당해야 합니다. 특정 시간 증분만을 허용하기 위해 minuteInterval을 사용할 수도 있습니다.

UIDatePicker.Mode.countDownTimerdatePickerMode 속성을 설정하는 것은 사용자가 시간과 분 단위로 듀레이션을 선택할 수 있도록 해줍니다. 이 모드에 진입하는 경우 property 속성은 TimeInterval로써 초로 측정되는 듀레이션을 나타냅니다. 이 속성을 초 단위로 설정하더라도 데이트 피커는 값을 분 단위로만 보여줄 수 있다는 것을 기억해야 합니다.

아래 그림은 datePickerMode 속성이 UIDatePicker.Mode.countDownTimer로 설정된, 그리고 minuteInterval 속성이 5로 설정된 데이트 피커를 보여주고 있습니다. countDownDuration의 값은 현재 4500입니다.

Note
시간 인터벌의 선택에서 UIDatePicker 객체를 사용할 수 있지만, 실제 타이머 동작을 구현하려면 Timer 객체를 사용해야 합니다. 더 많은 정보는 Timer를 보시기 바랍니다.

Timer
https://developer.apple.com/documentation/foundation/timer

Respond to User Interaction

데이트 피커는 사용자가 선택된 날짜를 변경할 때 이를 앱에게 알려주기 위해서 타깃 액션 디자인 패턴을 사용합니다. 데이트 피커의 값 변경이 발생했을 때 이를 알려주려면, valueChanged 이벤트를 갖는 액션 메소드를 등록해야 합니다. 런타임 시점에 데이트 피커는 사용자의 날짜 혹은 시간 선택에 대한 응답으로 메소드를 호출합니다.

addTarget(_:action:for:) 메소드를 사용하거나 인터페이스 빌더에서 연결을 생성해 액션에 데이트 피커를 연결할 수 있습니다. 액션 메소드의 세 가지 시그니처는 세 가지 중 한 가지 형태를 취하며, Listing 1에서 보이는 것과 같습니다. 데이트 피커에서 갑 변경에 응답하기 위해 필요한 정보를 제공할 수 있는 형태를 선택하시기 바랍니다.

Listing 1 Action methods for date pickers

@IBAction func doSomething()
@IBAction func doSomething(sender: UIDatePicker)
@IBAction func doSomething(sender: UIDatePicker, forEvent event: UIEvent)

Debug Date Pickers

데이트 피커 디버깅 시 아래 사항에 주의하시기 바랍니다.

  • 최소 날짜는 최대 날짜보다 빨라야 합니다. minimumDatemaximumDate 속성의 경계를 확인해야 합니다. 최대 날짜가 최소 날짜보다 빠른 경우 모든 속성은 무시되며, 데이트 피커는 모든 날짜 값 선택을 허용하게 됩니다. 최소 및 최대 날짜는 카운트다운 타이머 모드(UIDatePicker.Mode.countDownTimer)에서 무시됩니다.
  • 분 인터벌은 60으로 나눠지는 숫자여야 합니다. minuteInterval 값은 60으로 나눠질 수 있으며, 반대의 경우 기본값은 (1)로 사용됩니다.

Configure Using Attributes Inspector

Table 1은 인터페이스 빌더 내부에 잇는 특성 인스펙터에서 데이트 피커에 대해 설정할 수 있는 핵심 특성을 리스트로 보여주고 있습니다.

Table 1 Core attributes

AttributeDescription
Style데이트 피커의 스타일입니다. 데이트 피커의 모양을 결정합니다. datePickerStyle 속성과 함께 런타임 시점에서 이 값에 접근할 수 있습니다.
Mode데이트 피커 모드입니다. 데이트 피커가 시간, 날짜, 시간 및 날짜, 카운트다운 인터벌 중 어떤 것을 표시해야 하는지 결정합니다. datePickerMode 속성과 함께 런타임 시점에서 이 값에 접근할 수 있습니다.
Locale데이트 피커와 관련이 있는 로케일입니다. 이 속성은 특정 로케일로 시스템 기본값을 오버라이드할 수 있도록 해줍니다. locale 속성을 사용해서 코드 작성으로 이 특성에 접근할 수 있습니다.
Interval현재 모드에서 보여주고 있는 경우 분 스피너의 세분화입니다. 기본값은 1이며, 최대값은 30입니다. 선택할 수 있는 값은 60으로 나눠지는 숫자(1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)입니다. minuteInterval 속성을 사용해서 런타임 시점에 이 값에 접근할 수 있습니다.

Table 2는 데이트 피커에서 날짜 및 시간의 표시를 제어하는 특성을 리스트로 보여주고 있슨비다.

Table 2 Time attributes

AttributeDescription
Date데이트 피커가 표시할 초기 날짜입니다. 현재 날짜를 기본값으로 할 수 잇즈미나, 커스텀 값으로 설정할 수도 있슨비다. 이 특성은 코드 작성에서 date 속성을 설정하는 것과 동일합니다.
Constraints데이터 피커에 의해 표시되는 선택 가능한 날짜의 범위입니다. 동적 범위를 사용하려면 코드 작성으로 minimumDatemaximumDate 속성을 설정해야 합니다. 데이트 피커는 모드 특성이 카운트다운 타이머로 설정되었을 때 이와 같은 옵션을 무시합니다.
Timer카운트다운 타이머 모드에서 사용될 때 데이트 피커의 초기 값입니다. 값은 초 단위로 측정되지만, 표시는 분 단위입니다.

데이트 피커의 상속된 인터페이스 빌더 특성에 대한 정보는 UIControlUIView를 보시기 바랍니다.

UIControl
https://developer.apple.com/documentation/uikit/uicontrol
https://velog.io/@panther222128/UIControl

UIView
https://developer.apple.com/documentation/uikit/uiview
https://velog.io/@panther222128/UIView

Change the Appearance

preferredDatePickerStyle을 설정해서 UIDatePicker의 모양을 변경시킬 수 있습니다. 모양 스타일의 리스트는 UIDatePickerStyle을 보시기 바랍니다.

UIDatePickerStyle
https://developer.apple.com/documentation/uikit/uidatepickerstyle
https://velog.io/@panther222128/UIDatePickerStyle

오토 레이아웃을 사용해서 레이아웃에 데이트 피커를 통합시켜야 합니다. 데이트 피커의 크기가 조정될 수 있을지라도 데이트 피커는 내적 컨텐트 사이즈에서 사용되어야 합니다.

Specify a Locale

데이트 피커는 고유한 자신의 internationalization을 처리합니다. 해야 하는 것은 적합한 로케일 설정뿐입니다. 특성 인스펙터에서 로케일(locale) 필드를 설정함으로써 나타나는 데이트 피커에 대한 특정 로케일을 선택할 수 있습니다. 로케일을 설정하는 것은 데이트 피커가 표시를 위해 사용하는 언어를 변경하며, 날짜 및 시간의 형식도 변경합니다(예를 들어 특정 로케일은 월 전에 날자가 나타나거나 12시간 단위보다 24시간 단위를 선호합니다). 데이트 피커의 넓이는 localization의 길이에 따라서 자동으로 조정됩니다. 시스템 언어를 사용하려면 이 속성을 기본값으로 둬야 합니다.

더 많은 정보는 Internationalization and Localization Guide를 보시기 바랍니다.

Support Accessibility and VoiceOver

데이트 피커는 기본값으로 접근 가능합니다. 데이트 피커에 있는 각각의 시간 컴포넌트는 고유한 접근성 요소이며, Adjustable(adjustable) 특성을 갖습니다.

기기는 사용자가 보이스오버를 활성화하면 접근성 값, 특성, 힌트를 읽고 각 데이트 피커에 대해 소리냅니다. 보이스오버는 사용자가 피커 휠에 탭할 때 이 정보를 소리냅니다. 예를 들어 추가 알람 페이지(시계 > 알람 > 추가)에서 시간 열을 탭할 때 보이스 오버는 아래 내용을 소리냅니다.

"2 o'clock. Picker item. Adjustable. Swipe up or down with one finger to adjust the value."

iOS 컨트롤을 접근 가능하게 만드는 것에 대한 더 많은 정보는 Accessibility Programming Guide for iOS를 보시기 바랍니다.

See Also


Controls

UIControl

사용자 상호작용에 대한 응답으로 특정 액션 혹은 의도를 전달하는 시각적 요소인 컨트롤에 대한 베이스 클래스입니다.

https://developer.apple.com/documentation/uikit/uicontrol
https://velog.io/@panther222128/UIControl

UIButton

사용자 상호작용에 응답해 커스텀 코드를 실행하는 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uibutton
https://velog.io/@panther222128/UIButton

UIColorWell

컬러 피커를 표시하는 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uicolorwell
https://velog.io/@panther222128/UIColorWell

UIPageControl

각각이 앱의 문서 혹은 다른 데이터 모델 엔티티에 상응하는 점의 연속을 수평으로 표시하는 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uipagecontrol
https://velog.io/@panther222128/UIPageControl

UISegmentedControl

여러 세그먼트를 구성하는 수평 컨트롤이며, 각 세그먼트는 이산적 버튼처럼 기능합니다.

https://developer.apple.com/documentation/uikit/uisegmentedcontrol
https://velog.io/@panther222128/UISegmentedControl

UISlider

값의 연속적 범위로부터 하나의 값을 선택하기 위한 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uislider
https://velog.io/@panther222128/UISlider

UIStepper

값의 증가 혹은 감소를 위한 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uistepper
https://velog.io/@panther222128/UIStepper

UISwitch

온/오프처럼 이진 선택을 제공하는 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uiswitch
https://velog.io/@panther222128/UISwitch


0개의 댓글