feat(live-room): 채팅창 얼리기 기능을 추가한다
채팅 입력 제어와 룸 상태 동기화를 통합해 지연 입장자도 동일 상태를 적용한다.
This commit is contained in:
@@ -22,6 +22,10 @@ struct ChatTextFieldView: UIViewRepresentable {
|
||||
return true
|
||||
}
|
||||
|
||||
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
||||
return parent.isEnabled
|
||||
}
|
||||
|
||||
@objc func textDidChange(_ textField: UITextField) {
|
||||
parent.text = textField.text ?? ""
|
||||
}
|
||||
@@ -29,6 +33,7 @@ struct ChatTextFieldView: UIViewRepresentable {
|
||||
|
||||
@Binding var text: String
|
||||
var placeholder: String
|
||||
var isEnabled: Bool = true
|
||||
var onSend: () -> Void
|
||||
|
||||
func makeUIView(context: Context) -> UITextField {
|
||||
@@ -44,6 +49,7 @@ struct ChatTextFieldView: UIViewRepresentable {
|
||||
textField.tintColor = UIColor(hex: "3BB9F1")
|
||||
textField.font = UIFont(name: Font.preMedium.rawValue, size: 13.3)
|
||||
textField.returnKeyType = .send
|
||||
textField.isEnabled = isEnabled
|
||||
textField.setContentHuggingPriority(.defaultLow, for: .horizontal) // 우선순위 낮추기
|
||||
textField.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) // 우선순위 낮추기
|
||||
textField.addTarget(context.coordinator, action: #selector(Coordinator.textDidChange(_:)), for: .editingChanged)
|
||||
@@ -51,7 +57,13 @@ struct ChatTextFieldView: UIViewRepresentable {
|
||||
}
|
||||
|
||||
func updateUIView(_ uiView: UITextField, context: Context) {
|
||||
context.coordinator.parent = self
|
||||
uiView.text = text
|
||||
uiView.isEnabled = isEnabled
|
||||
|
||||
if !isEnabled && uiView.isFirstResponder {
|
||||
uiView.resignFirstResponder()
|
||||
}
|
||||
}
|
||||
|
||||
func makeCoordinator() -> Coordinator {
|
||||
|
||||
Reference in New Issue
Block a user