fix(live-room): 유지형 다이얼로그 표시 시 키보드를 내린다
This commit is contained in:
@@ -90,7 +90,28 @@ struct LiveRoomViewV2: View {
|
||||
|
||||
return !(isCurrentUserHost || isCurrentUserStaff)
|
||||
}
|
||||
|
||||
|
||||
private var isShowingPersistentDialog: Bool {
|
||||
viewModel.isShowProfilePopup
|
||||
|| viewModel.isShowDonationPopup
|
||||
|| (viewModel.changeIsAdult && !UserDefaults.bool(forKey: .auth))
|
||||
|| viewModel.isShowNoticeLikeHeart
|
||||
|| viewModel.isShowQuitPopup
|
||||
|| viewModel.isShowLiveEndPopup
|
||||
|| isShowChatDeleteDialog
|
||||
|| viewModel.isShowProfileList
|
||||
|| viewModel.isShowUserProfilePopup
|
||||
|| viewModel.isShowReportMenu
|
||||
|| viewModel.isShowUesrBlockConfirm
|
||||
|| viewModel.isShowUesrReportView
|
||||
|| viewModel.isShowProfileReportConfirm
|
||||
|| (viewModel.isShowNoChattingConfirm && viewModel.noChattingUserId > 0)
|
||||
|| isShowFollowNotifyDialog
|
||||
|| viewModel.isShowRouletteSettings
|
||||
|| (!viewModel.roulettePreviewList.isEmpty && viewModel.isShowRoulettePreview)
|
||||
|| viewModel.isShowRoulette
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
ScreenCaptureSecureContainer(isSecureModeEnabled: shouldEnforceScreenCaptureProtection) {
|
||||
ZStack {
|
||||
@@ -1086,7 +1107,7 @@ struct LiveRoomViewV2: View {
|
||||
guestFollowButtonTypeOverride = nil
|
||||
}
|
||||
}
|
||||
.onChange(of: isShowChatDeleteDialog) { isShowing in
|
||||
.onChange(of: isShowingPersistentDialog) { isShowing in
|
||||
if isShowing {
|
||||
hideKeyboard()
|
||||
}
|
||||
|
||||
60
docs/20260410_라이브룸다이얼로그표시시키보드내림.md
Normal file
60
docs/20260410_라이브룸다이얼로그표시시키보드내림.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# 20260410_라이브룸다이얼로그표시시키보드내림.md
|
||||
|
||||
## 개요
|
||||
- `LiveRoomViewV2`에서 자동으로 사라지지 않는 다이얼로그가 표시될 때, 채팅 입력으로 올라와 있던 키보드를 즉시 내린다.
|
||||
- 대상은 화면 위에 유지되는 다이얼로그/팝업이며, 기존에 이미 처리 중인 삭제 확인 다이얼로그와 동일한 사용자 경험으로 맞춘다.
|
||||
- 범위는 `LiveRoomViewV2.swift` 내부 상태 변화 처리로 한정한다.
|
||||
|
||||
## 요구사항 해석(고정)
|
||||
- 사용자가 채팅 입력 중이어도 비자동-dismiss 다이얼로그가 열리면 키보드는 내려가야 한다.
|
||||
- 자동으로 사라지는 토스트나 일시적 애니메이션 오버레이는 대상에서 제외한다.
|
||||
- 기존 다이얼로그 표시/닫기 로직, 각 액션의 비즈니스 동작은 변경하지 않는다.
|
||||
|
||||
## 완료 기준 (Acceptance Criteria)
|
||||
- [ ] AC1: `LiveRoomProfilesDialogView`가 표시되면 키보드가 내려간다.
|
||||
- [ ] AC2: `LiveRoomUserProfileDialogView`가 표시되면 키보드가 내려간다.
|
||||
- [ ] AC3: `SodaDialog` 기반의 유지형 다이얼로그가 표시되면 키보드가 내려간다.
|
||||
- [ ] AC4: 기존에 처리 중인 `isShowChatDeleteDialog` 동작은 유지된다.
|
||||
- [ ] AC5: 다이얼로그 표시 외 다른 기존 라이브룸 동작에는 회귀가 없다.
|
||||
|
||||
## 구현 체크리스트
|
||||
- [x] `LiveRoomViewV2` 내 유지형 다이얼로그 표시 상태 목록 확정
|
||||
- [x] 키보드 dismiss 공통 처리 지점 추가
|
||||
- [x] 관련 표시 상태 변화 시 `hideKeyboard()` 호출 연결
|
||||
- [x] 정적 진단 및 빌드 검증 수행
|
||||
|
||||
## 영향 파일(예상)
|
||||
- `SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift`
|
||||
|
||||
## 검증 계획
|
||||
- `lsp_diagnostics("SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift")`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||
- 수동 QA: 채팅 입력 중 각 대상 다이얼로그를 열어 키보드가 즉시 내려가는지 확인
|
||||
|
||||
## 검증 기록
|
||||
- 2026-04-10 (계획 문서 초안)
|
||||
- 무엇/왜/어떻게: `LiveRoomViewV2`의 다이얼로그 노출 구간과 기존 키보드 dismiss 처리(`isShowChatDeleteDialog`)를 기준으로, 유지형 다이얼로그 표시 시 키보드를 내리는 최소 수정 범위를 문서화했다.
|
||||
- 실행 명령/도구:
|
||||
- `read(LiveRoomViewV2.swift)`
|
||||
- `glob("docs/*")`
|
||||
- `read(20260319_라이브룸채팅삭제기능구현계획.md, 20260306_라이브룸외부이동확인다이얼로그.md)`
|
||||
- 결과:
|
||||
- 계획 문서 생성 완료.
|
||||
- 코드 수정 및 빌드 검증은 아직 수행하지 않음.
|
||||
|
||||
- 2026-04-10 (유지형 다이얼로그 표시 시 키보드 내림 반영)
|
||||
- 무엇/왜/어떻게: `LiveRoomViewV2`에 유지형 다이얼로그 표시 여부를 묶는 `isShowingPersistentDialog` 계산 프로퍼티를 추가하고, 해당 값이 `true`로 전환될 때 `hideKeyboard()`를 호출하도록 변경했다. 개별 버튼 액션마다 중복 처리하지 않고, 실제 다이얼로그 표시 상태 변화 시점에만 키보드 dismiss가 일어나도록 맞췄다.
|
||||
- 실행 명령/도구:
|
||||
- `background_output(bg_0e23617c)`
|
||||
- `lsp_diagnostics("SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift")`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test`
|
||||
- 결과:
|
||||
- `LiveRoomViewV2.swift` 진단 오류 없음 확인.
|
||||
- `SodaLive-dev` Debug 빌드 `** BUILD SUCCEEDED **` 확인.
|
||||
- `SodaLive` Debug 빌드는 병렬 실행 중 `build.db` lock으로 1회 실패했고, 동일 명령 단독 재실행 후 `** BUILD SUCCEEDED **` 확인.
|
||||
- 두 스킴 모두 test action 미구성으로 자동 테스트 실행 불가(`Scheme ... is not currently configured for the test action.`).
|
||||
- CLI 환경 제약으로 실제 라이브룸 진입 후 키보드/다이얼로그 상호작용 수동 QA는 후속 확인 필요.
|
||||
Reference in New Issue
Block a user