Skip to content

Commit cec78e8

Browse files
committed
fix: 루틴 등록/수정 로직 수정
1 parent 2da89e0 commit cec78e8

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

Projects/Presentation/Sources/RoutineCreation/View/RoutineCreationViewController.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,14 @@ final class RoutineCreationViewController: BaseViewController<RoutineCreationVie
108108
let attributes: [NSAttributedString.Key: Any] = [
109109
.font: BitnagilFont(style: .title3, weight: .semiBold).font,
110110
.foregroundColor: BitnagilColor.gray90 ?? .systemGray]
111+
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
112+
tap.cancelsTouchesInView = false
113+
tap.delegate = self
111114

112115
view.backgroundColor = .white
116+
view.addGestureRecognizer(tap)
113117

118+
scrollView.keyboardDismissMode = .interactive
114119
nameTextField.attributedPlaceholder = NSAttributedString(string: "루틴 제목을 입력해주세요.", attributes: attributes)
115120
nameTextField.font = BitnagilFont(style: .title3, weight: .semiBold).font
116121
nameTextField.textColor = BitnagilColor.gray10
@@ -132,6 +137,7 @@ final class RoutineCreationViewController: BaseViewController<RoutineCreationVie
132137
registerButton.addAction(
133138
UIAction { [weak self] _ in
134139
self?.viewModel.action(input: .registerRoutine)
140+
self?.navigationController?.popViewController(animated: true)
135141
},
136142
for: .touchUpInside)
137143
bindCreationCardViews()
@@ -335,6 +341,10 @@ final class RoutineCreationViewController: BaseViewController<RoutineCreationVie
335341
}
336342
}
337343

344+
@objc private func dismissKeyboard() {
345+
view.endEditing(true)
346+
}
347+
338348
@objc private func textFieldEditingChanged(_ sender: UITextField) {
339349
viewModel.action(input: .configureName(name: sender.text ?? ""))
340350
}
@@ -367,3 +377,9 @@ extension RoutineCreationViewController: UITextFieldDelegate {
367377
return true
368378
}
369379
}
380+
381+
extension RoutineCreationViewController: UIGestureRecognizerDelegate {
382+
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
383+
return !(touch.view is UIControl)
384+
}
385+
}

Projects/Presentation/Sources/RoutineCreation/ViewModel/RoutineCreationViewModel.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ final class RoutineCreationViewModel: ViewModel {
4646

4747
private(set) var output: Output
4848
private let nameSubject = CurrentValueSubject<String?, Never>("")
49-
private let subRoutinesSubject = CurrentValueSubject<[String], Never>([])
49+
private let subRoutinesSubject = CurrentValueSubject<[String], Never>(["", "", ""])
5050
private let repeatTypeSubject = CurrentValueSubject<RepeatType?, Never>(nil)
5151
private let periodStartSubject = CurrentValueSubject<Date?, Never>(nil)
5252
private let periodEndSubject = CurrentValueSubject<Date?, Never>(nil)
5353
private let executionTimeSubject = CurrentValueSubject<ExecutionTime, Never>(.init(startAt: nil))
54-
private let checkRoutinePublisher = PassthroughSubject<Bool, Never>()
54+
private let checkRoutinePublisher = CurrentValueSubject<Bool, Never>(false)
5555
private let routineUseCase: RoutineUseCaseProtocol
5656
private let recommenededRoutineUseCase: RecommendedRoutineUseCaseProtocol
5757
private var deletedSubroutines = Set<SubRoutineSummaryEntity>()
@@ -62,7 +62,7 @@ final class RoutineCreationViewModel: ViewModel {
6262
init(routineUseCase: RoutineUseCaseProtocol, recommenededRoutineUseCase: RecommendedRoutineUseCaseProtocol) {
6363
self.routineUseCase = routineUseCase
6464
self.recommenededRoutineUseCase = recommenededRoutineUseCase
65-
65+
6666
output = Output(
6767
namePublisher: nameSubject.eraseToAnyPublisher(),
6868
subRoutinesPublisher: subRoutinesSubject.eraseToAnyPublisher(),
@@ -75,6 +75,8 @@ final class RoutineCreationViewModel: ViewModel {
7575
.map { $0.startAt }
7676
.eraseToAnyPublisher(),
7777
isRoutineValid: checkRoutinePublisher.eraseToAnyPublisher())
78+
79+
updateIsRoutineValid()
7880
}
7981

8082
func action(input: Input) {

0 commit comments

Comments
 (0)