Skip to content

Commit adc1905

Browse files
committed
[BOOK-273] fix: 감상평 기록 화면 키보드에 의해 감상평 가이드 버튼 가려지는 문제 해결
1 parent df82134 commit adc1905

File tree

1 file changed

+21
-5
lines changed
  • feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/step

1 file changed

+21
-5
lines changed

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/step/ImpressionStep.kt

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,16 @@ import androidx.compose.material3.Text
1818
import androidx.compose.material3.rememberModalBottomSheetState
1919
import androidx.compose.runtime.Composable
2020
import androidx.compose.runtime.LaunchedEffect
21+
import androidx.compose.runtime.getValue
22+
import androidx.compose.runtime.mutableStateOf
2123
import androidx.compose.runtime.remember
2224
import androidx.compose.runtime.rememberCoroutineScope
25+
import androidx.compose.runtime.setValue
2326
import androidx.compose.ui.Alignment
2427
import androidx.compose.ui.Modifier
2528
import androidx.compose.ui.focus.FocusRequester
2629
import androidx.compose.ui.focus.focusRequester
30+
import androidx.compose.ui.focus.onFocusChanged
2731
import androidx.compose.ui.graphics.vector.ImageVector
2832
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
2933
import androidx.compose.ui.res.stringResource
@@ -46,6 +50,7 @@ import com.ninecraft.booket.feature.record.component.ImpressionGuideBottomSheet
4650
import com.ninecraft.booket.feature.record.register.RecordRegisterUiEvent
4751
import com.ninecraft.booket.feature.record.register.RecordRegisterUiState
4852
import kotlinx.coroutines.launch
53+
import tech.thdev.compose.extensions.keyboard.state.foundation.rememberKeyboardVisible
4954
import com.ninecraft.booket.core.designsystem.R as designR
5055

5156
@OptIn(ExperimentalMaterial3Api::class)
@@ -55,11 +60,18 @@ fun ImpressionStep(
5560
modifier: Modifier = Modifier,
5661
) {
5762
val coroutineScope = rememberCoroutineScope()
58-
val impressionGuideBottomSheetState =
59-
rememberModalBottomSheetState(skipPartiallyExpanded = true)
60-
63+
val impressionGuideBottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
6164
val focusRequester = remember { FocusRequester() }
6265
val keyboardController = LocalSoftwareKeyboardController.current
66+
val scrollState = rememberScrollState()
67+
val keyboardState by rememberKeyboardVisible()
68+
var isSentenceTextFieldFocused by remember { mutableStateOf(false) }
69+
70+
LaunchedEffect(keyboardState, isSentenceTextFieldFocused) {
71+
if (keyboardState && isSentenceTextFieldFocused) {
72+
scrollState.animateScrollTo(scrollState.maxValue)
73+
}
74+
}
6375

6476
LaunchedEffect(Unit) {
6577
if (state.impressionState.text.isEmpty()) {
@@ -78,7 +90,8 @@ fun ImpressionStep(
7890
modifier = Modifier
7991
.fillMaxSize()
8092
.padding(horizontal = ReedTheme.spacing.spacing5)
81-
.verticalScroll(rememberScrollState()),
93+
.padding(bottom = 80.dp)
94+
.verticalScroll(scrollState),
8295
) {
8396
Text(
8497
text = stringResource(R.string.impression_step_title),
@@ -98,7 +111,10 @@ fun ImpressionStep(
98111
modifier = Modifier
99112
.fillMaxWidth()
100113
.focusRequester(focusRequester)
101-
.height(140.dp),
114+
.height(140.dp)
115+
.onFocusChanged { focusState ->
116+
isSentenceTextFieldFocused = focusState.isFocused
117+
},
102118
keyboardOptions = KeyboardOptions(
103119
keyboardType = KeyboardType.Text,
104120
imeAction = ImeAction.Default,

0 commit comments

Comments
 (0)