UITextView

Panther·2021년 10월 2일
0
post-custom-banner

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

"A scrollable, multiline text region."

스크롤 가능한 다중 라인의 텍스트 영역입니다.

Declaration

@MainActor class UITextView : UIScrollView

Overview

UITextView는 커스텀 스타일 정보를 사용하는 텍스트 표시를 지원하고, 텍스트 편집 역시 지원합니다. 보통 큰 텍스트 문서의 바디를 표시하는 시점처럼 여러 라인의 텍스트를 표시하기 위해 텍스트 뷰를 사용합니다.

이 클래스는 attributedText 속성의 사용을 통해 여러 텍스트 스타일을 지원합니다. (스타일이 적용된 텍스트는 iOS 6 이전의 버전에서 지원되지 않습니다.) 이 속성에 값을 설정하는 것은 텍스트 뷰가 특성화된 스트링에서 제공된 스타일 정보를 사용하도록 합니다. 스타일 특성을 설정하기 위해 font, textColor, textAlignment 속성을 사용할 수 있지만, 이와 같은 속성들은 텍스트 뷰에 있는 모든 텍스트에 적용됩니다. 앱에서 플레인과 풍부한 텍스트 표시를 하는 것에 있어 텍스트 뷰(UIWebView 객체가 아닌) 사용을 권장합니다.

Managing the Keyboard

사용자가 편집 가능한 텍스트 뷰를 탭할 때 해당 텍스트 뷰는 첫 번째 리스폰더가 되며, 자동으로 연결된 키보드 표시를 시스템에게 요청합니다. 키보드의 나타남은 UI 일부를 가릴 수도 있기 때문에 가릴 수도 있는 모든 뷰의 위치를 조정함으로써 이와 같은 일이 발생하는 것은 직접 구현해야 합니다. 테이블 뷰와 같은 몇 가지 시스템 뷰는 자동으로 첫 번째 리스폰더를 뷰로 스크롤해서 볼 수 있도록 돕습니다. 그러나 첫 번째 리스폰더가 스크롤 영역의 하단에 있는 경우 첫 번째가 시각화될 수 있도록 스크롤 뷰 자체의 크기를 조정하거나 위치를 조정할 필요가 있을 것입니다.

키보드 해제 선택 시점은 애플리케이션의 책임입니다. 사용자가 UI에 있는 특정 버튼을 탭하는 것과 같은 사용자의 특정 액션에 대한 응답으로 키보드를 해제하게 될 것입니다. 키보드르 해제하려면 현재 첫 번째 리스폰더인 텍스트 뷰에 resignFirstResponder() 메시지를 보내시기 바랍니다. 그렇게 하는 것은 텍스트 뷰 객체가 현재 편집 세션(딜리게이트 객체의 동의를 갖는)을 종료하도록 하고, 키보드를 숨기도록 합니다.

UITextInputTraits 프로토콜에서 제공하는 속성을 사용해서 키보드의 나타남 자체를 커스터마이징할 수 있습니다. 텍스트 뷰 객체는 이 프로토콜을 구현하며, 속성들을 지원합니다. 표시하고자 하는 키보드의 타입(ASCII, Numbers, URL, Email, 기타)을 구체화하기 위해 이와 같은 속성을 사용할 수 있습니다. 자동 대문자 및 텍스트 수정을 지원할지에대한 여부와 같은 기본 텍스트 진입 동작을 설정할 수도 있습니다.

Keyboard Notifications

시스템이 키보드를 보여주거나 숨길 때, 키보드는 여러 키보드 노티피케이션을 포스트합니다. 이와 같은 노티피케이션은 뷰의 위치 조정 및 크기 조정에 관련이 있는 계산에 사용할 수 있도록 해주는 키보드의 크기 정보를 포함하며, 다른 키보드에 대한 정보도 포함합니다. 이와 같은 노티피케이션을 등록하는 것은 키보드에 대한 몇 가지 정보를 가져오기 위한 방법뿐입니다. 시스템은 키보드 관련 이벤트에 대해 아래 노티피케이션을 전달합니다.

  • keyboardWillShowNotification
  • keyboardDidShowNotification
  • keyboardWillHideNotification
  • keyboardDidHideNotification

이와 같은 노티피케이션에 대한 더 많은 정보는 UIWindow에 있는 설명을 보시기 바랍니다.

UIWindow
https://developer.apple.com/documentation/uikit/uiwindow
https://velog.io/@panther222128/UIWindow

State Preservation

iOS 6 및 이후 버전에서 뷰의 restorationIdentifier 속성에 값을 할당하는 경우 아래 정보를 보존하게 됩니다.

  • selectedRange 속성에 의해 알려지는 텍스트의 선택된 영역입니다.
  • isEditable 속성에 의해 알려지는 텍스트 뷰의 편집 상태입니다.

다음 launch 주기 동안 뷰는 저장된 값으로 위와 같은 속설들의 복구를 시도합니다. 선택 영역이 복구된 뷰의 텍스트로 적용될 수 없다면, 텍스트는 선택되지 않습니다. 상태 보존 및 복구 작업에 대한 더 많은 정보는 App Programming Guide for iOS를 보시기 바랍니다.

App Programming Guide for iOS는 UIKit 링크로 연결됩니다.

App Programming Guide for iOS
https://developer.apple.com/documentation/uikit#//apple_ref/doc/uid/TP40007072

디자인에 대한 가이드는 Human Interface Guidelines를 보시기 바랍니다.

Human Interface Guidelines
https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/
https://velog.io/@panther222128/iOS

See Also


Text Views

UILabel

하나 혹은 하나 이상의 라인으로 정보를 담는 텍스트를 표시하는 뷰입니다.

https://developer.apple.com/documentation/uikit/uilabel
https://velog.io/@panther222128/UILabel

UITextField

인터페이스에서 편집 가능한 텍스트 영역을 표시하는 객체입니다.

https://developer.apple.com/documentation/uikit/uitextfield
https://velog.io/@panther222128/UITextField

Drag and Drop Customization

텍스트 뷰에 표준 드래그 앤 드롭 지원을 확장해서 컨텐트의 커스텀 타입을 포함하도록 합니다.

https://developer.apple.com/documentation/uikit/views_and_controls/drag_and_drop_customization
https://velog.io/@panther222128/Drag-and-Drop-Customization


post-custom-banner

0개의 댓글