将表情符号选择器输入链接到变量

问题描述 投票:0回答:1

我正在制作一个 swiftUI 应用程序,我需要一个按下时会出现的按钮

  1. 打开默认的 macOS 表情符号选择器
  2. 选择表情符号后,将该表情符号链接到变量“文本”
  3. 将按钮标签更改为“文本”

我已经成功做到了这一点,但是,它需要一个文本字段。用户可以查看此文本字段,对其进行编辑以及放置 1 个以上表情符号。我不想要这个。

我想要这样的东西:

MacOS Reminders List Icon - Emoji Selection

这是我的代码

import SwiftUI

struct ContentView: View {
    
    @State private var text: String = ""
    
    var body: some View {
        
        VStack {
            
                TextField("", text: $text)
                Button(text) {
                    // Show character palette for the focused text field
                    NSApp.orderFrontCharacterPalette($text)
                    
                }.frame(width: 30, height: 30)
                .buttonBorderShape(.circle)
            

                Button("Print Emoji") {
                print(text)
            }.padding()
        }.padding()
        
    }
}



如何使用默认表情符号选择器删除文本字段,同时仍获得相同的输出。如果用户看不到它,我可以保留文本字段,您只能通过选择表情符号来输入它,只允许一个字符,当选择第二个表情符号时,变量将被替换。

swift macos swiftui
1个回答
0
投票

SwiftUI 中似乎没有本地方法可以做到这一点。然而,有一些库比如这个可以满足你的需求。记得先导入包!

示例代码:

import SwiftUI
import EmojiPalette

struct ContentView: View {
    @State private var text: String = "😀"
    @State var showSheet = true
    var body: some View {
        VStack {
            Button(text) {
                showSheet.toggle()
            }
            .frame(width: 30, height: 30)
            .buttonBorderShape(.circle)
            .emojiPalette(selectedEmoji: $text, isPresented: $showSheet)
            Button("Print Emoji") {
                print(text)
            }
            .padding()
        }
        .padding()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.