피드백 수정

Judy·2021년 10월 5일
0

현재 앱은 아직 추가와 수정해야 할 부분이 있긴 했지만 대부분의 기능이 구현되고 어느 정도 디테일도 실현이 된 상태였다.

하지만 항상 나만 테스트 해봤고 나는 개발자이기 때문에 정해진 규칙과 순서로만 앱을 실행해봐서 에러와 보완해야 할 점을 아는데 한계가 있었다.

그래서 이 앱의 사용자가 될 수 있는 언니의 도움을 받아 사용해보게 한 후 피드백을 들었는데 생각보다 고칠게 많았다..😂

내가 생각한 대로 이용해주지 않는 사용자들...

1. Alert 취소

취소 버튼이 있는 Alert를 띄우는 상황이 많은데 특히 메인 화면에서 정렬을 클릭했다가 취소할 때 자연스럽게 알림창 밖의 화면을 눌렀다.

취소 버튼을 만들었으니 됐다 생각했지만 사실 나도 외부 화면을 클릭해 취소하는 것이 익숙했기 때문에 수정하기로 했다.

외부 화면 터치 제스처 같은 걸 이용해야 하나 했는데 방법은 간단했다.

alert.addAction(UIAlertAction(title: "취소", style: .cancel) 

UIAlertAction의 style 중에 cancel을 선택하면 됐던 것이다..
별 생각 없이 default로만 설정했는데 style에 따라 다른 기능이 있었다.

부가적으로 취소 버튼은 모양을 다르게 구분하고 싶었는데 이 역시 style로 동시에 해결됐다.



2. DatePicker - compact

장소 추가에서 날짜를 선택하는 DatePicker는 compact 형식으로 클릭하면 작은 달력이 나온다.


날짜를 선택하면 선택한 날짜가 표시만 될 뿐 계속 다른 날짜로 바꿔서 선택할 수 있다.

선택한 날짜로 확정하려면 달력 외부 화면을 터치해야 한다. 이는 처음 사용하는 사람에겐 아무리 눌러도 선택이 안 되기 때문에 당황스러울 수 있다.

본인도 처음에 이를 알고 '선택' 같은 버튼을 넣으려다 포기했는데 언니가 아예 선택하면 바로 넘어가게 하면 좋겠다고 해서 아이디어를 얻었다.

@IBAction func datePick(_ sender: UIDatePicker){
    presentedViewController?.dismiss(animated: true, completion: nil)
}

DatePicker에 value changed로 액션을 넣어 날짜를 선택할 때마다 현재 보여 화면 즉, 달력이 사라지도록 했다.


3. 이미지 편집

장소 추가에서 사진을 넣으면 사진을 자르는 편집 화면이 나온다. 하지만 막상 넣으면 전체 사진이 들어갔다...

전체 이미지가 들어가도 상관 없으니 그냥 두었는데 언니가 열심히 사진 자르려고 조정한 사람들의 희망고문이라고🥲

방법이 어려울거 같지 않아 초반에 인지하고 넣으려고 했으나 다른 중요 기능 보완에 급급해 수정하는 걸 까먹어버렸다.

imagePicker.allowsEditing = true

사진 편집이 가능하게 해둔 후

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    if let img = info[UIImagePickerController.InfoKey.editedImage] as? UIImage{
        selectedImage = img
    }else if let img = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
	selectedImage = img 
    }       
        placeImageView.image = selectedImage   
        self.dismiss(animated: true, completion: nil) 
}

편집된 이미지가 있으면 편집된 이미지로 저장하면 된다.


4. 테이블 셀 삭제 확인 알림

언니가 아무 생각 없이 추가 한 장소의 셀을 밀었는데 그대로 삭제돼서 절규했다..ㅋㅋㅋㅋㅋ

오히려 밀어서 삭제할 수 있다는 걸 알려줘야 했었는데 그 기능은 아이폰 유저라면 이미 익숙한데 이렇게 매정하게 삭제가 되니 황당하다 했다.

생각해보니 후반에 작업한 그룹, 분류는 삭제할 때 Alert로 확인 했는데 확실히 초반엔 돌아만 가게 작업했던 것 같다..

let okAlert = UIAlertAction(title: "삭제", style: .destructive)

위에서 본 cancel말고 어떤 style이 있나 했는데 destructive로 설정하면 이렇게 빨간 글씨로 나오게 된다!

장소 상세 화면에서 삭제할 때는 알림을 넣었어서 알림이 두 번 반복돼서 나와 메인 화면 알림만 남겨두었다.


5. 그룹, 분류 편집 가능

그룹과 분류를 추가하고 삭제할 수 있으니 딱히 편집 기능은 넣을 생각을 안했다.

하지만 그룹이나 분류에서 하나라도 포함된 장소가 있으면 삭제가 불가하다 하니 언니가 그럼 미묘하게 이름을 바꾸고 싶어도 일일히 다 없애고 다시 추가해야 하냐고 하니 편집의 필요성을 느꼈다..

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

이미 추가와 삭제가 있으므로 편집 기능도 재사용해서 금방 만들었는데 편집을 추가하고 삭제하는 방식으로 하니 왠지 코드가 꼬여서

func updateField(_ type: String, items: [String]){
    let categoryRef = db.collection("category").document(Uid)
        categoryRef.updateData([
            type : items
        ])
}

배열 값을 수정하고 아예 배열 전체를 업로드 하도록 했다.

 tableView.deselectRow(at: indexPath, animated: true)

셀을 선택해서 편집하고 나도 선택된 셀이 회색으로 표시되어 있어서 셀 선택을 해제하는 코드도 넣었다.


기타등등

그 외에도 자잘하게 사용자가 직접 장소의 주소를 입력하지 못하게 하고, 장소 추가 lable들을 진하게(Midium style) 해서 구분하기 쉽게 했다.

언니 피드백 이외에도 작은 요소들을 수정했다.

1) 캘린더 장소 표시

3개 이상 장소가 있으면 점이 너무 많아 지저분해 보일까봐 3개이상 부턴 3개의 점만 표시하게 바꿨다.

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
    //    if placeDay.contains(date){
        let eventDay = dates.first(where: {$0.date == date})
        if eventDay == nil{
            return 0
        }else if (eventDay?.name.count)! < 3{
            return (eventDay?.name.count)!
        }else{
            return 3
        }
    }

2) 점수 표시 변경 (가보고 싶어요!)

이전에는 점수가 "0.0"이면 점수를 표시하지 않아 가보지 않은 장소로 간주했다.
하지만 0점을 줬을 수도 있다는 생각이 들어 점수 기준이 아닌 방문 횟수가 0이면 "가보고 싶어요!"로 표시하도록 변경했다.

if places[indexPath.row].count != "0"{
            cell.lblPlaceInfo.text = cellData[indexPath.row].group + " ∙ " + cellData[indexPath.row].category + " ∙ " + cellData[indexPath.row].rate + "점"
        }else{
            cell.lblPlaceInfo.text = cellData[indexPath.row].group + " ∙ " + cellData[indexPath.row].category + " ∙ " + "가보고 싶어요!"
}

이 방식으로 하려면 "가 봤어요!" 표시를 했으면 반드시 방문횟수가 0이 아니어야 하므로 장소 추가 시 이를 확인하고 알림하도록 했다.
}else if swVisit.isOn == true && count == "0"{
    myAlert("방문 횟수 미선택", message: "방문 횟수를 입력해주세요.")
}

3) 색상 설정 -> 보류

MapView에서 마커를 다른 색으로 표시하면 더 구분이 쉬울까 해서 색상을 지정하도록 할까 고민했는데 일단 보류하기로 했다.

    override func viewWillAppear(_ animated: Bool) {
        tableView.backgroundColor = selectedColor
    }
    
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let picker = UIColorPickerViewController()
        self.present(picker, animated: true, completion: nil)
    }
    

    
    func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
        print(viewController.selectedColor)
    }
    
    func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
        print(viewController.selectedColor)
        selectedColor = viewController.selectedColor
    }
profile
iOS Developer

0개의 댓글