Предотвратить входной панель сообщений вниз (Exytechat)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Предотвратить входной панель сообщений вниз (Exytechat)

Сообщение Anonymous »

Я был бы очень благодарен, если кто -то сможет помочь мне решить проблему ниже.

Код: Выделить всё

// ChatApp.swift
import SwiftUI
import ExyteChat

@main
struct ChatApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}

struct ContentView: View {
var body: some View {
NavigationStack {
NavigationLink("Open Chat") {
ChatDetailView()
}
.navigationTitle("Home")
.padding()
}
}
}

struct CollapsibleHeaderView: View {
@Environment(\.colorScheme) private var cs
@State private var isCollapsed = true

var body: some View {
VStack(alignment: .leading, spacing: 12) {
HStack(alignment: .top, spacing: 12) {
Image(systemName: "person.crop.circle")
.resizable()
.frame(width: 46, height: 46)
.foregroundColor(.blue)

VStack(alignment: .leading, spacing: 4) {
Text("John Doe")
.font(.headline)
.foregroundColor(.gray)
}

Spacer()
}

HStack {
Text("Sample Title Goes Here")
.font(.title3)
.fontWeight(.semibold)
.foregroundColor(cs == .dark ? .white : .primary)

Spacer()

Button {
withAnimation(.easeInOut) { isCollapsed.toggle() }
} label: {
Image(systemName: isCollapsed ? "chevron.down" : "chevron.up")
.imageScale(.medium)
.foregroundColor(cs == .dark ? .white : .primary)
}
.buttonStyle(.plain)
}

if !isCollapsed {
Text("Category: Demo")
.font(.subheadline)
.foregroundColor(.gray)

ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 8) {
ForEach(0.. String {
switch self {
case .reply: return "Reply"
case .copy: return "Copy"
case .edit: return "Edit"
}
}

func icon() -> Image {
switch self {
case .reply: return Image(systemName: "arrowshape.turn.up.left")
case .copy: return Image(systemName: "doc.on.doc")
case .edit: return Image(systemName: "square.and.pencil")
}
}

static func menuItems(for message: ExyteChat.Message) -> [MessageAction] {
message.user.isCurrentUser ? [.reply, .copy, .edit] : [.reply, .copy]
}
}

var body: some View {
VStack(spacing: 0) {
CollapsibleHeaderView()

Divider()

ExyteChat.ChatView(
messages: messages,
chatType: .conversation,
replyMode: .quote
) { draft in
Task {
let msg = await ExyteChat.Message.makeMessage(
id: UUID().uuidString,
user: me,
status: .sent,
draft: draft
)
messages.append(msg)
}
}
messageMenuAction: { (action: MessageAction,
defaultActionClosure,
message) in
switch action {
case .reply:
defaultActionClosure(message, .reply)
case .copy:
defaultActionClosure(message, .copy)
case .edit:
defaultActionClosure(message, .edit { editedText in
if let idx = messages.firstIndex(where: { $0.id == message.id }) {
messages[idx].text = editedText
}
})
}
}
.frame(maxHeight: .infinity)
}
.navigationTitle("Chat Detail")
.navigationBarTitleDisplayMode(.inline)
}
}

проблема
Когда расширяется CollapsibleHeaderView '(isCollApsed = false), он нажимает на панели ввода чата вниз, и эта панель инструментов заканчивается за клавиатурой, что делает его жестким или невозможным. Требование 1
предотвратить расширение панели инструментов ввода, когда будет расширена за клавиатуру, когда клавиатура оставалась видимой. Сделайте пространство. < /p>
🔹 Требование 2
Убедитесь, что между нижней частью расширенного заголовка и входной панели существует как минимум 500px . Заголовок.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -exytechat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»