Skip to content

Commit dc3b2b9

Browse files
committed
[BOOK-195] feat: ImpressionStep에서 키보드 자동 띄우기, 감상평 선택 시 커서를 문장 맨 앞에 위치시키기
1 parent 37e3863 commit dc3b2b9

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/textfield/ReedRecordTextField.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ fun ReedRecordTextField(
6565
Column {
6666
BasicTextField(
6767
state = recordState,
68-
modifier = Modifier.fillMaxWidth(),
68+
modifier = modifier.fillMaxWidth(),
6969
inputTransformation = inputTransformation,
7070
textStyle = ReedTheme.typography.body2Medium.copy(color = textColor),
7171
keyboardOptions = keyboardOptions,

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/register/RecordRegisterPresenter.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.runtime.mutableStateOf
99
import androidx.compose.runtime.remember
1010
import androidx.compose.runtime.rememberCoroutineScope
1111
import androidx.compose.runtime.setValue
12+
import androidx.compose.ui.text.TextRange
1213
import com.ninecraft.booket.core.common.utils.handleException
1314
import com.ninecraft.booket.core.data.api.repository.RecordRepository
1415
import com.ninecraft.booket.core.designsystem.EmotionTag
@@ -184,6 +185,7 @@ class RecordRegisterPresenter @AssistedInject constructor(
184185
impressionState.edit {
185186
replace(0, length, "")
186187
append(selectedImpressionGuide)
188+
this.selection = TextRange(0) // 커서를 문장 맨 앞에 위치
187189
}
188190
isImpressionGuideBottomSheetVisible = false
189191
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@ import androidx.compose.material3.Icon
1111
import androidx.compose.material3.Text
1212
import androidx.compose.material3.rememberModalBottomSheetState
1313
import androidx.compose.runtime.Composable
14+
import androidx.compose.runtime.LaunchedEffect
15+
import androidx.compose.runtime.remember
1416
import androidx.compose.runtime.rememberCoroutineScope
1517
import androidx.compose.ui.Alignment
1618
import androidx.compose.ui.Modifier
19+
import androidx.compose.ui.focus.FocusRequester
20+
import androidx.compose.ui.focus.focusRequester
1721
import androidx.compose.ui.graphics.vector.ImageVector
22+
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
1823
import androidx.compose.ui.res.stringResource
1924
import androidx.compose.ui.res.vectorResource
2025
import androidx.compose.ui.unit.dp
@@ -41,6 +46,16 @@ fun ImpressionStep(
4146
val impressionGuideBottomSheetState =
4247
rememberModalBottomSheetState(skipPartiallyExpanded = true)
4348

49+
val focusRequester = remember { FocusRequester() }
50+
val keyboardController = LocalSoftwareKeyboardController.current
51+
52+
LaunchedEffect(Unit) {
53+
if (state.impressionState.text.isEmpty()) {
54+
focusRequester.requestFocus()
55+
keyboardController?.show()
56+
}
57+
}
58+
4459
Column(
4560
modifier = modifier
4661
.background(White)
@@ -63,6 +78,7 @@ fun ImpressionStep(
6378
recordHintRes = R.string.impression_step_hint,
6479
modifier = Modifier
6580
.fillMaxWidth()
81+
.focusRequester(focusRequester)
6682
.height(140.dp),
6783
)
6884
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3))

0 commit comments

Comments
 (0)