Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 리팩토링
- UITextView
- Refactoring
- Observable
- swiftUI
- uitableview
- map
- swift documentation
- 스위프트
- Xcode
- SWIFT
- UICollectionView
- rxswift
- Clean Code
- ios
- Protocol
- collectionview
- MVVM
- tableView
- 클린 코드
- HIG
- 애니메이션
- 리펙터링
- clean architecture
- RxCocoa
- combine
- Human interface guide
- uiscrollview
- 리펙토링
- ribs
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] scroll view에서 원하는 위치로 scroll하기 본문
sc특정 textField를 탭한 경우, 특정 위치로 scroll시키는 로직
ScrollView만들기
여기 참고
방향 정의
public enum ScrollDirection {
case top
case center
case bottom
}
extension으로 scroll이동 구현
public extension UIScrollView {
func scroll(to direction: ScrollDirection) {
DispatchQueue.main.async {
switch direction {
case .top:
self.scrollToTop()
case .center:
self.scrollToCenter()
case .bottom:
self.scrollToBottom()
}
}
}
private func scrollToTop() {
setContentOffset(.zero, animated: true)
}
private func scrollToCenter() {
let centerOffset = CGPoint(x: 0, y: (contentSize.height - bounds.size.height) / 2)
setContentOffset(centerOffset, animated: true)
}
private func scrollToBottom() {
let bottomOffset = CGPoint(x: 0, y: contentSize.height - bounds.size.height + contentInset.bottom)
if(bottomOffset.y > 0) {
setContentOffset(bottomOffset, animated: true)
}
}
}
각 텍스트 필드 델리게이트 설정
tfTop.delegate = self
tfCenter.delegate = self
tfBottom.delegate = self
텍스트 필드에 becomeFirstResponder가 되는경우 작동하는 델이게이트인, textFieldDidBeginEditing(_:)함수에 분기
extension ViewController: UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
switch textField {
case tfTop:
scrollView.scroll(to: .top)
case tfCenter:
scrollView.scroll(to: .center)
case tfBottom:
scrollView.scroll(to: .bottom)
default:
break
}
}
}
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] Nib, File's Owner, First Responder 개념 (0) | 2020.11.01 |
---|---|
[iOS - swfit] Codable 사용방법 (Encode, Decode) (0) | 2020.10.18 |
[iOS - swift] iOS13버전 이상에서 SceneDelegate삭제하기 (0) | 2020.10.17 |
[iOS - swift] nib 개념, 앱의 sandbox (0) | 2020.10.01 |
[iOS - swift] NFC, NFD (한글 자소 분리 해결) (0) | 2020.08.30 |
Comments