(Cocoa) NSUserInterfaceValidations – UI 컨트롤의 활성화 여부 결정

NSUserInterfaceValidations 특정한 메뉴 항목이나 버튼, 테이블뷰, 텍스트뷰 및 텍스트 필드등이 특정한 조건에 따라 활성화/비활성화되어야 하는 경우에 이를 처리하는 전략으로는 두 가지 방법이 있다. 특정 조건값이 변경될 때 (변경지점에서, 혹은 옵저빙을 통해서) 관련된 컨트롤의 활성화 여부를 변경해주는 방법 특정 조건값을 계산 프로퍼티로 만든 후, 이를 코코아 바인딩으로 컨트롤의 enabled 키와 연결하는 방법 코코아에서는 이 외에도 컨트롤에

(Swift | Cocoa) 드래그 앤 드롭

많은 코코아 관련 서적에서 복사/붙여넣기를 구현하는 다음 과정으로 드래그 앤 드롭을 소개하는데, 대부분이 어떤 이미지 뷰에 이미지를 끌어다 놓는 부분까지만 소개하고 있다. 아마도 드래그 앤 드롭 자체가 실제로는 상당히 복잡한 매커니즘이라 그런 듯 한데, 이번 글에서는 드래그 앤 드롭을 구현하기 위해서 소스 뷰와 타깃 뷰 그리고 전달되는 데이터 모델에 대해 어떤 클래스와 구현이 필요한지를 살펴보도록

(Cocoa | Swift) 문서기반 앱

NSDocument 코코아에서 도큐먼트 기반 앱은 Pages 등의 프로그램과 같이 단일 문서당 개별 윈도를 갖고 구동되는 앱이다. 이러한 앱은 다음의 특성을 가진다. 한 애플리케이션에서 문서의 개수만큼의 윈도를 열 수 있다. 앱은 여러 문서들을 관리하게 된다. 문서는 문서의 데이터 구조를 관리하며, 이러한 데이터를 표시하는 윈도우를 관리한다. 문서는 디스크에 문서의 데이터를 저장하고, 읽고, 새 문서를 시작하는 기능을 담당한다.

iOS에서 사용할 수 있는 애니메이션 구현 기법들에 대한 정리

애니메이션 구현 방법 iOS의 애니메이션 구현은 크게 두 가지로 나눌 수 있는데 하나는 UIKit의 애니메이션 API를 사용하는 것이고, 다른 하나는 코어 애니메이션을 사용하는 것이다. 오늘은 각각의 세부적인 구현보다는 각각의 API의 차이와 기본적인 사용방법에 대해서 살펴보도록 하겠다.

(Swift) 복사/붙여넣기 가능한 커스텀 클래스

복사/붙여넣기를 지원하는 커스텀 클래스 만들기 복습 이전 시간에 macOS에서 클립보드를 통해서 복사와 붙여넣기를 통해서 뷰 혹은 앱간의 데이터를 교환하는 과정에 대해서 살짝 살펴보았다. 어떤 클래스의 객체가 클립보드로 복사되려면, 해당 클래스는 클립보드에게 어떤 타입의 데이터들을 넣어줄 수 있음을 알리고, 각 타입에 대한 데이터를 생성하여 클립보드에게 전달해주는 동작을 수행해야 하며, 이 동작은 NSPasteboardWriting에 정의되어 있다. 그리고 붙여넣는