diff --git a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj index 6af0e32..168e9f4 100644 --- a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj +++ b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 0B000CE92B4D9D6E00AEC582 /* SelectPeriodController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */; }; + 0B000CEB2B4D9D9100AEC582 /* SelectTotalTimeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */; }; + 0B000CED2B4D9DA800AEC582 /* ApprovePermisionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */; }; + 0B000CF12B4DA30F00AEC582 /* AppSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */; }; 0B0035402B43D64D00DA140C /* HMHNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */; }; 0B2C2D3B2B443BE90023CCFA /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D3A2B443BE90023CCFA /* Image.swift */; }; 0B2C2D412B4572240023CCFA /* HMHSelectButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D402B4572240023CCFA /* HMHSelectButton.swift */; }; @@ -153,6 +157,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectPeriodController.swift; sourceTree = ""; }; + 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectTotalTimeController.swift; sourceTree = ""; }; + 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApprovePermisionController.swift; sourceTree = ""; }; + 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSelectViewController.swift; sourceTree = ""; }; 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHNavigationBar.swift; sourceTree = ""; }; 0B2C2D3A2B443BE90023CCFA /* Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Image.swift; sourceTree = ""; }; 0B2C2D402B4572240023CCFA /* HMHSelectButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHSelectButton.swift; sourceTree = ""; }; @@ -289,6 +297,17 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0B000CE72B4D9D4E00AEC582 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */, + 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */, + 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */, + 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; 0B2C2D3C2B4559AE0023CCFA /* Onboarding */ = { isa = PBXGroup; children = ( @@ -796,6 +815,7 @@ 3666C8842B47110800564874 /* CreateChallenge */ = { isa = PBXGroup; children = ( + 0B000CE72B4D9D4E00AEC582 /* ViewControllers */, 3666C8852B47110800564874 /* Views */, ); path = CreateChallenge; @@ -1003,9 +1023,12 @@ 0B7817522B4BE0280078E925 /* ProgressBarManager.swift in Sources */, 0B8A89C42B369FA000688BA6 /* F.swift in Sources */, 3666C8892B47110800564874 /* TotalTimePickerView.swift in Sources */, + 0B000CE92B4D9D6E00AEC582 /* SelectPeriodController.swift in Sources */, 174AF49A2B447CFB00450D07 /* ChanllengeViews.swift in Sources */, + 0B000CEB2B4D9D9100AEC582 /* SelectTotalTimeController.swift in Sources */, 17314F872B49853C0089A551 /* HMHQuitAlert.swift in Sources */, 0BA193B62B4D08B7007E3F9C /* ProblemSurveyViewController.swift in Sources */, + 0B000CED2B4D9DA800AEC582 /* ApprovePermisionController.swift in Sources */, 0B8A89B72B369F1100688BA6 /* C.swift in Sources */, 0B2C2D3B2B443BE90023CCFA /* Image.swift in Sources */, 17314F852B497FDE0089A551 /* HMHLogoutAlert.swift in Sources */, @@ -1041,6 +1064,7 @@ 0BC0EBD22B493B6B003EF5D4 /* OnboardingProgressView.swift in Sources */, 364C4E732B4BF27C0015729C /* AppAddCollectionReusableView.swift in Sources */, 17314F7F2B485E150089A551 /* CustomAlertButton.swift in Sources */, + 0B000CF12B4DA30F00AEC582 /* AppSelectViewController.swift in Sources */, 36A3D9BA2B3EBC65007EA272 /* UIButton+.swift in Sources */, 3666C88F2B471C5800564874 /* TabBarController.swift in Sources */, 36E05FE62B48825A005B633E /* AppCollectionReusableView.swift in Sources */, diff --git a/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift b/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift index c74ee8e..31d8316 100644 --- a/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift +++ b/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift @@ -34,4 +34,24 @@ extension UILabel { self.numberOfLines = 2 } } + + func setTextWithLineHeightLeft(text: String?, lineHeight: CGFloat) { + if let text = text { + let style = NSMutableParagraphStyle() + style.maximumLineHeight = lineHeight + style.minimumLineHeight = lineHeight + + let attributes: [NSAttributedString.Key: Any] = [ + .paragraphStyle: style, + .baselineOffset: (lineHeight - font.lineHeight) * 0.26 + ] + + let attrString = NSAttributedString(string: text, + attributes: attributes) + self.attributedText = attrString + self.textAlignment = .left + self.numberOfLines = 2 + } + } + } diff --git a/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift b/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift index cc09bc6..9f2bd7f 100644 --- a/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift +++ b/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift @@ -75,10 +75,18 @@ enum StringLiteral { enum OnboardigMain { static let timeSurvey = "하루 평균 휴대폰을\n얼마나 사용하나요?" static let problemSurvey = "휴대폰을 사용할 때\n어떤 문제를 겪고 있나요?" + static let selectPeriod = "챌린지 기간을 선택해 주세요" + static let selectTotalTime = "총 목표 이용 시간을\n설정해 주세요" + static let approvePermision = "스크린타임 권한 허용이 필요해요" + static let appSelect = "중독에서 탈출하고 싶은\n앱을 선택해 주세요" } enum OnboardigSub { static let problemSurvey = "해당 문항은 최대 2개까지 선택할 수 있어요" + static let selectPeriod = "첫 챌린지로 가볍게 도전하기 좋은 7일을 추천해요" + static let selectTotalTime = "목표 이용 시간은 최대 6시간까지 설정할 수 있어요" + static let approvePermision = "언제든지 설정에서 스크린타임 권한을\n변경할 수 있어요" + static let appSelect = "목표 이용 시간이 지나면 앱이 잠겨요\n선택하고 싶은 앱은 언제든지 추가할 수 있어요" } enum TimeSurveySelect { @@ -94,4 +102,11 @@ enum StringLiteral { static let thirdSelect = "특정 앱에 수시로 접속하게 돼요" static let fourthSelect = "중독을 탈출하려고 노력해도 잘 안 돼요" } + + enum PeriodSelect { + static let firstSelect = "7일" + static let secondSelect = "14일" + static let thirdSelect = "20일" + static let fourthSelect = "30일" + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift index b9685f0..f31028d 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift @@ -10,7 +10,13 @@ import UIKit import SnapKit import Then +protocol HMHSelectButtonDelegate: AnyObject { + func updateAvailability(isEnabled: Bool) +} + final class HMHSelectButton: UIButton { + weak var delegate: HMHSelectButtonDelegate? + @frozen enum HMHSelectButtonType { case solitary @@ -105,14 +111,15 @@ final class HMHSelectButton: UIButton { } setChecked(true) + setAvailability() case .multiple: let selectedCount = (superview?.subviews.compactMap { ($0 as? HMHSelectButton)?.isChecked } ?? []).filter { $0 }.count if selectedCount < 2 || isChecked { setChecked(!isChecked) + setAvailability() } - case .disabled: return } @@ -121,4 +128,16 @@ final class HMHSelectButton: UIButton { func setButtonText(buttonTitle: String) { buttonContentLabel.text = buttonTitle } + + func setAvailability() { + if (superview?.subviews.compactMap { ($0 as? HMHSelectButton)?.isChecked } ?? []).filter { $0 }.count == 0 { + updateAvailability(status: false) + } else { + updateAvailability(status: true) + } + } + + func updateAvailability(status: Bool) { + self.delegate?.updateAvailability(isEnabled: status) + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift new file mode 100644 index 0000000..7e3e85e --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift @@ -0,0 +1,45 @@ +// +// AppSelectViewController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class AppSelectViewController: OnboardingBaseViewController { + override func viewDidLoad() { + super.viewDidLoad() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 5 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.permission + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.appSelect + subTitleText = StringLiteral.OnboardigSub.appSelect + } +} + +extension AppSelectViewController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = AppSelectViewController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} + + diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift new file mode 100644 index 0000000..96b3745 --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift @@ -0,0 +1,45 @@ +// +// ApprovePermisionController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class ApprovePermisionController: OnboardingBaseViewController { + override func viewDidLoad() { + super.viewDidLoad() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 5 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.permission + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.approvePermision + subTitleText = StringLiteral.OnboardigSub.approvePermision + } +} + +extension ApprovePermisionController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = AppSelectViewController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} + diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift new file mode 100644 index 0000000..7b47f5f --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift @@ -0,0 +1,81 @@ +// +// SelectPeriodController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class SelectPeriodController: OnboardingBaseViewController { + private let surveyView = SurveyView(firstButtonType: .solitary, secondButtonType: .solitary, thirdButtonType: .disabled, fourthButtonType: .disabled) + + override func viewDidLoad() { + super.viewDidLoad() + setUI() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + override func viewDidAppear(_ animated: Bool) { + setUI() + } + + private func setUI(){ + setHierarchy() + setConstraints() + } + + private func setHierarchy() { + view.addSubview(surveyView) + } + + private func setConstraints() { + surveyView.snp.makeConstraints { + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) + $0.leading.trailing.equalTo(progressBar) + } + } + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 3 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.next + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.selectPeriod + subTitleText = StringLiteral.OnboardigSub.selectPeriod + surveyView.firstButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.firstSelect) + surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) + surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) + surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self + } +} + +extension SelectPeriodController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = SelectTotalTimeController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} + +extension SelectPeriodController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + nextButton.updateStatus(isEnabled: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift new file mode 100644 index 0000000..db3a35d --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift @@ -0,0 +1,73 @@ +// +// SelectTotalTimeController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class SelectTotalTimeController: OnboardingBaseViewController { + private let pickerView = TotalTimePickerView() + override func viewDidLoad() { + super.viewDidLoad() + setUI() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + override func viewDidAppear(_ animated: Bool) { + setUI() + } + + private func setUI(){ + setHierarchy() + setConstraints() + } + + private func setHierarchy() { + view.addSubview(pickerView) + } + + private func setConstraints() { + pickerView.snp.makeConstraints { + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) + $0.leading.trailing.equalTo(progressBar) + } + } + + private func setDelegate() { + self.delegate = self + pickerView.totalTimePickerDelegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 4 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.next + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.selectTotalTime + subTitleText = StringLiteral.OnboardigSub.selectTotalTime + } +} + +extension SelectTotalTimeController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = ApprovePermisionController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} + +extension SelectTotalTimeController: TotalTimePickerDelegate { + func updateAvailability() { + nextButton.updateStatus(isEnabled: true) + } +} + diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift index 2d54704..a07ccd1 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift @@ -10,7 +10,13 @@ import UIKit import SnapKit import Then +protocol TotalTimePickerDelegate: AnyObject { + func updateAvailability() +} + final class TotalTimePickerView: UIPickerView { + weak var totalTimePickerDelegate: TotalTimePickerDelegate? + private let hours: [String] = ["1", "2", "3", "4", "5", "6"] private let titleLabel = UILabel().then { @@ -43,7 +49,7 @@ final class TotalTimePickerView: UIPickerView { private func setConstraints() { titleLabel.snp.makeConstraints { $0.centerY.equalToSuperview() - $0.trailing.equalToSuperview().inset(124.adjusted) + $0.trailing.equalToSuperview().inset(110.adjusted) } } @@ -68,6 +74,7 @@ extension TotalTimePickerView: UIPickerViewDelegate { func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { self.reloadComponent(component) + self.totalTimePickerDelegate?.updateAvailability() } func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift index be95177..28ced65 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift @@ -16,28 +16,28 @@ protocol NextViewPushDelegate: AnyObject { class OnboardingBaseViewController: UIViewController { weak var delegate: NextViewPushDelegate? - let mainTitleLabel = UILabel().then { $0.textColor = .whiteText - $0.font = .iosTitle1Semibold22 + $0.font = .iosTitle3Semibold22 $0.text = StringLiteral.OnboardingButton.next - $0.numberOfLines = 2 + $0.setTextWithLineHeightLeft(text: $0.text, lineHeight: 33) } private let subTitleLabel = UILabel().then { $0.textColor = .gray2 $0.font = .iosText6Medium14 $0.text = StringLiteral.OnboardingButton.next + $0.setTextWithLineHeightLeft(text: $0.text, lineHeight: 21) } var nextButtonText: String = StringLiteral.OnboardingButton.next var mainTitleText: String = "" var subTitleText: String = "" - let navigationBar = HMHNavigationBar(leftItem: .normal, + let navigationBar = HMHNavigationBar(leftItem: .normal, isBackButton: true, isTitleLabel: false, isPointImage: false, isBackGroundGray: false) let progressBar = ProgressBarManager.shared.progressBarView - lazy var nextButton = OnboardingButton(buttonStatus: .enabled) + lazy var nextButton = OnboardingButton(buttonStatus: .disabled) var step = 0 override func viewWillAppear(_ animated: Bool) { @@ -87,7 +87,7 @@ class OnboardingBaseViewController: UIViewController { } subTitleLabel.snp.makeConstraints { - $0.top.equalTo(mainTitleLabel.snp.bottom).offset(4.adjusted) + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(7.adjusted) $0.leading.equalTo(progressBar) } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift index f31df04..8b52e3d 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift @@ -11,7 +11,10 @@ import SnapKit import Then final class ProblemSurveyViewController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .multiple) + private let surveyView = SurveyView(firstButtonType: .multiple, + secondButtonType: .multiple, + thirdButtonType: .multiple, + fourthButtonType: .multiple) override func viewDidLoad() { super.viewDidLoad() @@ -59,13 +62,23 @@ final class ProblemSurveyViewController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } extension ProblemSurveyViewController: NextViewPushDelegate { func didTapButton() { - let nextViewController = TimeSurveyViewController() + let nextViewController = SelectPeriodController() self.navigationController?.pushViewController(nextViewController, animated: false) } } +extension ProblemSurveyViewController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + nextButton.updateStatus(isEnabled: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift index e7b2963..759bbcb 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift @@ -11,7 +11,7 @@ import SnapKit import Then final class TimeSurveyViewController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .solitary) + private let surveyView = SurveyView(firstButtonType: .solitary, secondButtonType: .solitary, thirdButtonType: .solitary, fourthButtonType: .solitary) override func viewDidLoad() { super.viewDidLoad() @@ -58,6 +58,11 @@ final class TimeSurveyViewController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } @@ -67,3 +72,9 @@ extension TimeSurveyViewController: NextViewPushDelegate { self.navigationController?.pushViewController(nextViewController, animated: false) } } + +extension TimeSurveyViewController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + nextButton.updateStatus(isEnabled: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift index 3f0ddd1..3898af4 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift @@ -17,7 +17,7 @@ final class OnboardingButton: UIButton { case disabled } - private var type: OnboardingButtonType = .disabled + var type: OnboardingButtonType = .disabled private let buttonTitleLabel = UILabel().then { $0.textColor = .whiteText @@ -73,5 +73,15 @@ final class OnboardingButton: UIButton { func setButtonText(buttonTitle: String) { buttonTitleLabel.text = buttonTitle } + + func updateStatus(isEnabled: Bool) { + if isEnabled { + self.isEnabled = true + self.backgroundColor = .bluePurpleButton + } else { + self.isEnabled = false + self.backgroundColor = .gray5 + } + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift index c854925..fc3e4c6 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift @@ -20,17 +20,25 @@ final class SurveyView: UIView { var secondButtonText: String = "" var thirdButtonText: String = "" var fourthButtonText: String = "" - var buttonType: HMHSelectButton.HMHSelectButtonType = .solitary + var firstButtonType: HMHSelectButton.HMHSelectButtonType = .solitary + var secondButtonType: HMHSelectButton.HMHSelectButtonType = .solitary + var thirdButtonType: HMHSelectButton.HMHSelectButtonType = .solitary + var fourthButtonType: HMHSelectButton.HMHSelectButtonType = .solitary - lazy var firstButton = HMHSelectButton(buttonType: buttonType) - lazy var secondButton = HMHSelectButton(buttonType: buttonType) - lazy var thirdButton = HMHSelectButton(buttonType: buttonType) - lazy var fourthButton = HMHSelectButton(buttonType: buttonType) + lazy var firstButton = HMHSelectButton(buttonType: firstButtonType) + lazy var secondButton = HMHSelectButton(buttonType: secondButtonType) + lazy var thirdButton = HMHSelectButton(buttonType: thirdButtonType) + lazy var fourthButton = HMHSelectButton(buttonType: fourthButtonType) - - init(buttonType: HMHSelectButton.HMHSelectButtonType) { + init(firstButtonType: HMHSelectButton.HMHSelectButtonType, + secondButtonType: HMHSelectButton.HMHSelectButtonType, + thirdButtonType: HMHSelectButton.HMHSelectButtonType, + fourthButtonType: HMHSelectButton.HMHSelectButtonType) { super.init(frame: .zero) - self.buttonType = buttonType + self.firstButtonType = firstButtonType + self.secondButtonType = secondButtonType + self.thirdButtonType = thirdButtonType + self.fourthButtonType = fourthButtonType setAddTarget() setUI() @@ -62,8 +70,4 @@ final class SurveyView: UIView { private func setAddTarget() { } - - func setButtonType(buttonType: HMHSelectButton.HMHSelectButtonType) { - self.buttonType = buttonType - } }