Skip to content

11월 11일 회의록

구병조(GEN) edited this page Nov 11, 2024 · 1 revision

로컬 저장소(Persist) 모듈에 대한 회의

회 의 일 시 November 11, 2024 4:04 PM
참 여 자 문영균 구병조

회의 안건

  • Domain을 고려하지 않는 Persist 모듈

회의 내용

안건 #1:

| 배경

지금은 엔티티를 고려한 설계가 아닌, Core Data를 통해서 로컬에 데이터를 저장하고 불러올 수 있는 수준의 모듈을 만들려고 한다.


| 토의

인터페이스화

  • Create
    • single element
  • Update
    • single element
  • Read
    • multiple element
  • Delete
    • single element, multiple element

⇒ protocol 만들기 → 사용하는 곳에서 채택하여 사용(구체화)


안건 #2:

| 배경

엔티티의 속성이 변경되는 경우가 잦다.


| 문제

설계가 완전하지 않아 엔티티의 속성값이 변경되는 경우가 많다.


| 토의 내용

도메인 회의를 통해서 모델 내의 엔티티가 정해지고 코어 데이터 엔티티를 설정하면 될 것으로 보임.


채팅 UI 기획에 대한 회의

회 의 일 시 November 11, 2024 3:20 PM
참 여 자 조한승, 김민석

회의 안건

  • 채팅 UI 설계
    • 채팅 리스트: TableView? CollectionView?
    • 입력칸: TextField? TextView?
    • 채팅 상세 내용(말풍선): TextView? UILabel?
    • SwiftUI 이용 영역
  • 채팅 UI 세부적인 설계
    • 채팅이 진행방향 구현
    • 채팅 입력에 따른 스크롤링
    • 가장 아래로 내려가는 버튼
    • 채팅 시작할때 제일 밑으로 가게
    • 스크롤링 할때 마다 위로 채팅이 생성되게
  • 그 외 예외처리
    • TextField Sizing
    • 키보드 생성시 제일 최근 메세지 보이게

회의 내용

안건 #1: 채팅 UI 설계

| 채팅 리스트: TableView? CollectionView?

두 개를 나누는 기준은 ‘행과 열이 나뉘는가?’이므로, 열이 1개 뿐인 채팅은 테이블뷰 이용을 결정


| 입력칸: TextField? TextView?

  • 텍스트를 여러줄 입력할 시, 사이즈 변화가 필요하므로 텍스트뷰 이용 결정
  • 또한 높이는 최소 1줄, 최대 5.3줄의 크기로 제한
  • 탭바와같이 Floating

메세지 전송 버튼은 → UIButton → 클릭시 입력창에 있는 TextView내용들을 보내주기

  • TextView에 내용이 빈값이면 버튼 비활성화
  • 채팅을 보내서 AI 대답이 오기전에 다시 보낼수 있는가?
    • 채팅을 보낸 순간부터, 서버응답을 받아 AI 메세지 UI업데이트 되기 전까지 disabled

PlaceHolder: 메시지 입력


| 채팅 상세 내용(말풍선): UILabel?

Cell들임 ⇒ SwiftUI(Text)로 넣고 ⇒ 내용은 서버 내용, User 입력 내용

Cell Style → 2개

  • AI쪽 메세지
  • User쪽 메세지
    • SwiftUI(Text) Cell
    • init(type: robot)시 → background 바뀌고, 왼쪽에 위치할지 오른쪽에 위치할지
  • 정렬방식: reading(robot), trailing(user)
  • 말풍선 최대 너비 설정(좌우 양끝이 닿지 않게 하기 위함)
    • 화면 너비의 60%
      • 가로는 정해두고 넘어가면 밑으로 나오게
  • 말풍선 최대 높이 설정:
    • 세로는 화면 높이의 70% 이상이면 더보기 버튼 활성
    • 더 보기: 말풍선 아래로 전개
    • 닫기: 말풍선 위로 축소
    • 세로 높이 고정 함수를 만들면(true, false)
  • 꾹 눌러 옵션 띄우기: 복사

| SwiftUI 이용 영역

  • TableViewCell(말풍선)
  • 텍스트 입력창: SwiftUI.TextEditior? →

ViewController → View들이 있음

ViewController → HostingViewController → SwiftUI의 View 구조체

채팅 입력해서 보내면???

→ SwiftUI Property가 어떻게 VC에 전달해서 ViewModel이나 Model에 전달할지?

SwiftUI가 VM이나 M을 가지고 있어야할지?

채팅화면의 입력창: SwiftUI? UIKit?

안건 #2: 채팅 UI 세부적인 설계


| 채팅이 아래에서 위로 어떻게 진행할지?

image.png


| 채팅 입력에 따른 스크롤링

채팅을 입력하게 되면 scrollToBottom 함수 동작


| 가장 아래로 내려가는 버튼

scrollToBottom 함수를 버튼에 넣기


| 채팅 시작할때 제일 밑으로 가게


| 스크롤링 할때 마다 위로 채팅이 생성되게


안건 #3: 그 외 예외처리

| TextField Sizing


| 키보드 생성시 제일 최근 메세지 보이게


참고 자료

https://velog.io/@s_sub/새싹-iOS-26주차

https://pooh-footprints.tistory.com/entry/swift-채팅-UI를-만들어봅시다1

https://velog.io/@sossont/iOSTableView-활용해서-채팅앱-만들기-2

https://ios-adventure-with-aphelios.tistory.com/20

https://medium.com/@llghdud921/swiftui에서-keyboard가-나타날때-scroll되는-기능을-구현해보자-abe6107ba598

https://ggool.tistory.com/89

Clone this wiki locally