SwiftUI 키보드 위 툴바 버튼이 표시되지 않는 문제
Button not showing up in toolbar above keyboard
핵심 요약
- 코드는 `ToolbarItemGroup(placement: .keyboard)` 안에 `Return` 버튼을 추가하는 `KeyboardReturnMod` 뷰 수정자를 정의한다.
- `SettingsTab`의 숫자 입력 필드는 `.decimalPad` 키보드와 `@FocusState`에 연결되며, 수정자의 버튼 동작은 포커스를 해제한다.
- 본문에는 버튼이 표시되지 않는다는 제목과 코드만 있고, 발생 원인이나 해결 방법을 판단할 OS 버전·추가 설명은 없다.
도입
제공된 코드는 SwiftUI 화면의 키보드 영역에 `Return` 버튼을 배치하려는 구성이다. `KeyboardReturnMod`가 `.keyboard` 위치의 툴바 항목을 만들고, `SettingsTab`의 `Daily goal (Intake)` 입력 필드가 `.decimalPad` 키보드를 사용한다. 버튼 동작은 `focusedField`를 `nil`로 바꾸도록 전달된다.
상세 요약
코드 구성
KeyboardReturnMod는 ViewModifier로 선언되어 있다. returnAction 클로저를 받아 콘텐츠에 다음 툴바를 추가한다.
- 툴바 항목은
ToolbarItemGroup(placement: .keyboard)안에 배치된다. - 버튼의 레이블에는
keyboard.chevron.compact.down시스템 이미지와Return텍스트가 포함된다. - 버튼을 누르면 전달받은
returnAction()을 실행한다.
화면과 입력 필드 연결
SettingsTab은 NavigationStack 안에 Form을 구성한다. Options 섹션의 Daily goal (Intake) 행에는 TextField가 있으며, 값은 mainVM.dailyGoal에 연결되고 숫자 형식으로 표시된다. 입력 필드에는 .keyboardType(.decimalPad)가 적용된다.
화면은 @FocusState var focusedField: STField?를 선언하고, 입력 필드에 .focused($focusedField, equals: .dailyGoal)을 지정한다. 따라서 코드상 해당 필드의 포커스 상태는 focusedField와 연결되어 있다. Form에는 KeyboardReturnMod가 적용되며, 수정자에 전달한 동작은 focusedField = nil이다. 버튼을 누를 때 호출되는 동작은 이 포커스 상태를 비우는 것이다.
본문에서 확인할 수 없는 내용
제목은 키보드 위 툴바 버튼이 나타나지 않는 문제를 제시하지만, 제공된 내용에는 코드 외의 설명이나 해결 과정이 없다. 버튼이 실제로 어떤 화면이나 조건에서 표시되지 않는지, 사용 중인 OS 버전이 무엇인지도 적혀 있지 않다. 따라서 이 자료만으로 원인을 확정하거나 특정 수정 방법을 안내할 수 없다.
결론
코드에서 확인되는 것은 키보드 툴바 버튼의 선언 방식과 숫자 필드의 포커스 연결뿐이다. 버튼이 표시되지 않는 원인을 특정하거나 수정안을 제시할 정보는 본문에 없다. OS 버전, 재현 조건, 실제 표시 상태와 같은 세부 사항도 제공되지 않았으므로, 이 코드만으로 동작을 단정하지 않는다.