DataDetector 텍스트뷰에는 dataDetector라는 것이 있음. 텍스트뷰에 입력된 텍스트를 감지해서 다양한 기능을 만들어줌. 하지만 이 기능을 이용하려면 isEditing이 false로 되어있어야함!! -> 즉, 내가 텍스트뷰에 입력하는 것이 아닌 미리 코드로 작성해야함. Detector이기때문에 타입을 link로 해놓고 url이 입력되어있다면 인식하지 못함. 1. link userInputTextView.dataDetectorTypes = .link userInputTextView.text = "www.naver.com" userInputTextView.isEditable = false 2. PhoneNumber userInputTextView.dataDetectorTypes = .phone..
User Notification Framework 사용자의 디바이스에 앱의 알림을 표시하는 기능이 담긴 프레임워크 알림과 함께 소리를 재생할 수 있고, 뱃지를 지정할 수 있음. 알림이 표시되기 위해서는 반드시 사용자가 권한을 허용해야함. 이런 화면을 본 적이 있을텐데, 여기서 허용하지않으면 알림이 뜨지 않음. 서버와 앱 내부에서 알림을 전달할 수 있음 -> Local Notificatioin과 Remote Notification Local Notification 앱 내부에서 디바이스에 알림을 전달하는 방법 서버에서 알림을 생성해서 만드는 것이 아니기때문에 보통 비슷한 시간에 비슷한 내용으로 알림이 전달됨. 예) 매일 저녁 9시에 일기를 쓰라는 알림. 무료 개발자 계정에서도 구현 가능. Remote Not..
UITextField 클래스 안에는 기본적으로 placeholder프로퍼티가 있다. 하지만 UITextView에는 placeholder가 없기때문에 직접 구현을 해야한다. 구현해보기전에 TextField에서의 placeholder의 특징을 생각해보자. -> 텍스트필드가 비어있는 경우엔 placeholder가 보인다. -> 텍스트필드 편집을 시작하면 placeholder가 사라진다. -> 편집을 끝냈을때 텍스트필드가 비어있다면 placeholder를 다시 보여주고, 텍스트가 있는 경우엔 텍스트를 보여준다. 위의 특징들을 똑같이 구현하여 TextView에서도 placeholder를 사용해보자. 먼저, TextView를 추가하고 레이아웃을 잡아준다. Editing 기능 관련 메서드를 사용하기 위해서는 UITe..
Protocol(프로토콜) 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진 -> 규칙이라고 생각했음. Delegate Pattern을 구현하기 위해 이용됨. -> 특정 컨트롤에서 발생하는 이벤트를 효율적으로 관리하기 위해 대리자에게 위임하고, 실제 이벤트 발생 시에 대리자가 콜백 메서드를 호출해줌. -> 테이블뷰를 이용할때도 delegate를 이용했었음. tableView.delegate = self를 이용해 뷰컨트롤러에게 위임한 것임. 프로토콜은 정의만하고 제시할뿐이지 실질적인 기능 구현은 채택한 클래스, 열거형 등에서 이루어져야함. 프로토콜 메서드 중괄호를 사용할 수 없고 메서드의 이름, 매개변수와 반환타입까지만 작성해야함. 이때 매개변수의 기본값을 지정할 수 없음. 타입 메서드..
Property Obsever 저장 프로퍼티에서 사용되며 프로퍼티의 값을 관찰하다가 변경되었을때 호출됨. -> 이전에 다마고치에서 썼던 NotificationCenter의 옵저버랑 비슷한 느낌인 것 같은데.. 연산 프로퍼티처럼 사용하는데 get, set대신 willSet과 didSet을 사용. willSet -> 값이 바뀌기 직전에 호출 didSet -> 값이 바뀐 직후에 호출 연산 프로퍼티에서 set에 newValue를 이용했던 것처럼 여기서도 이용가능. -> didSet에서는 바뀌기 전 값인 oldValue도 사용가능. 구조체 내에서 자기자신의 프로퍼티를 바꾸는 경우엔 mutating작성해야함. 구조체, 열거형같은 값 타입의 프로퍼티들은 인스턴스 메서드로 값이 바뀔 수 없음. -> mutating을 ..
- Total
- Today
- Yesterday