【问题标题】:How to make sure that only emoji can be entered in the textfield SwiftUi如何确保在文本字段 SwiftUi 中只能输入表情符号
【发布时间】:2021-02-27 20:16:40
【问题描述】:

我在网上找到了这段代码,不知道怎么应用

class EmojiTextField: UITextField {

   // required for iOS 13
   override var textInputContextIdentifier: String? { "" } // return non-nil to show the Emoji keyboard ¯\_(ツ)_/¯ 

    override var textInputMode: UITextInputMode? {
        for mode in UITextInputMode.activeInputModes {
            if mode.primaryLanguage == "emoji" {
                return mode
            }
        }
        return nil
    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    您可以使用this 链接显示表情符号键盘。

    我刚刚使用了这个类并创建了一个字符串扩展来过滤并获取唯一的表情符号。

    我也,添加限制输入表情符号的代码。

    extension String {
        func onlyEmoji() -> String {
            return self.filter({$0.isEmoji})
        }
    }
    
    extension Character {
        var isEmoji: Bool {
            guard let scalar = unicodeScalars.first else { return false }
            return scalar.properties.isEmoji && (scalar.value > 0x238C || unicodeScalars.count > 1)
        }
    }
    
    import Combine
    struct EmojiContentView: View {
        
        @State private var text: String = ""
        @State private var isEmoji: Bool = true
        
        var body: some View {
            
            HStack{
                EmojiTextField(text: $text, placeholder: "Enter emoji", isEmoji: $isEmoji)
                    .onReceive(Just(text), perform: { _ in
                        // This allow only emoji
                        self.text = self.text.onlyEmoji()
                        /*
                         //This allow only emoji and allow only 3 emoji
                         self.text = String(self.text.onlyEmoji().prefix(3))
                         */
                    })
            }
        }
    }
    

    【讨论】:

    • 我成功了。你知识渊博。并且可以通过点击键盘以外的区域以某种方式移除键盘吗?
    猜你喜欢
    • 2018-12-10
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 2016-04-04
    相关资源
    最近更新 更多