일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- swiftUI
- UITextView
- Human interface guide
- collectionview
- RxCocoa
- uitableview
- 리펙터링
- swift documentation
- SWIFT
- Xcode
- uiscrollview
- rxswift
- UICollectionView
- map
- 스위프트
- HIG
- ribs
- MVVM
- combine
- 애니메이션
- ios
- Observable
- Clean Code
- 리펙토링
- Refactoring
- Protocol
- clean architecture
- tableView
- 클린 코드
- 리팩토링
- Today
- Total
목록CURSOR (4)
김종권의 iOS 앱 개발 알아가기
1. UITextField, UITextView에서 알면 좋은 개념 - deleteBackward() 2. UITextField, UITextView에서 알면 좋은 개념 - binding (rx.text, editingChnaged, allEditingEvents, shouldChangeCharactersIn, allEditingEvents) 3. UITextField, UITextView에서 알면 좋은 개념 - NSRange, UITextRange (#utf16) 4. UITextField, UITextView에서 알면 좋은 개념 - prefix, suffix, insert, deleteBackward() 개념 현재 화면 상의 cursor 위치 앞쪽의 문자를 삭제하는 UITextField혹은 UITex..
iOS 17 textViewDidChangeSelection 버그 iOS17 이전까지는 델리게이트에서 selection range가 변경되면 textView.selectedRange값이 실시간으로 변경해주었지만, iOS17 부터는 사용자가 드래그를 놓았을때만 호출됨 심지어 textView.selectedRange값을 계속 print해보아도 cursor를 놓았을때만 변경되는 버그가 존재 extension ViewController: UITextViewDelegate { func textViewDidChangeSelection(_ textView: UITextView) { print("range>", textView.selectedRange) } } 실시간으로 cursor 위치 파악하는 방법 selectio..
UITextView의 Cursor 개념 Cursor는 사용자 편의를 위해서 현재 수정되거나 작성될 곳의 위치를 나타내는 역할 애플에서는 이 Cursor도 코드로 이동시키거나 Cursor의 위치를 파악할 수 있도록 NSRange 형태로 제공 NSRange 개념은 이전 포스팅 글 참고 NSRange 요약 개념 NSRange는 _NSRange의 Typealias로 되어 있고 범위의 시작 위치를 location, 길이를 length 프로퍼티로 표현 public struct _NSRange : @unchecked Sendable { public init() public init(location: Int, length: Int) public var location: Int public var length: Int ..
cocoapod pod 'AnyFormatKit' 구현 import import AnyFormatKit 델리게이트 함수에 적용 textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 예제1) 폰 번호 포맷 - 010-1234-2134 extension ViewController: UITextFieldDelegate { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { guard..