Fezravien / re-ios-open-market

REST API 연동을 통한 상품 목록 조회, 상세 조회, 등록, 수정, 삭제 기능을 가진 앱
3 stars 0 forks source link

상품 등록하기 #3

Closed Fezravien closed 3 years ago

Fezravien commented 3 years ago

구현내용

새로운 상품 등록하기

서버에 상품 등록 요청

상품 등록을 위한 Request를 만들기 위해서는 서버 API 에서 제공하는 multipart/form-data 형식을 이용해야 함


화면 구성하기


이미지 #13 #14


상품 정보 입력 확인하기

제한사항

Image : 최대 5장 각각 300KB 미만 Title : 글자수 0 이상 Currency : PickView KRW, JPY, USD

스크린샷 2021-10-02 오후 2 55 32

Price : 0 이상의 정수 DiscountPrice : 0 이상의 정수 (옵셔널) Stock : 0 이상의 정수

충족되지 못하면 Alert을 띄워서 사용자에게 알림

상품 상세 설명 입력시 키보드 간섭


private func setKeyboardObserver() {
        NotificationCenter.default.addObserver(self, selector: #selector(adjustForKeyboard), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(adjustForKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil)
    }

@objc func adjustForKeyboard(notification: Notification) {
        guard let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return }

        let keyboardScreenEndFrame = keyboardValue.cgRectValue
        let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, from: view.window)

        if notification.name == UIResponder.keyboardWillHideNotification {
            itemDescription.contentInset = .zero
        } else {
            itemDescription.contentInset = UIEdgeInsets(top: 15, left: 10, bottom: keyboardViewEndFrame.height - view.safeAreaInsets.bottom, right: 10)
        }

        itemDescription.scrollIndicatorInsets = itemDescription.contentInset

        let selectedRange = itemDescription.selectedRange
        itemDescription.scrollRangeToVisible(selectedRange)
    }

키보드가 만약 TextView의 커서를 가리게 된다면, textview.contentInset 을 (키보드의 크기 - 뷰의 safeArea.bottom) 크기 계산을 하여 커서를 키보드 위에 위치시킨다.


상품 등록 후 처리

상품 등록이 정상적으로 동작한다면 등록 완료 Alert을 통해 사용자에게 성공을 알리고, 메인 페이지로 이동 후 등록된 상품을 상세 페이지를 통해 보여준다

Unit Test 수행