gpt4 book ai didi

swift - 如何限制用户文本输入并禁用 JSQMessagesViewController 中的发送按钮

转载 作者:行者123 更新时间:2023-11-28 08:31:28 25 4
gpt4 key购买 nike

我正在使用 JSQMessagesViewController 构建消息传递应用程序,我想知道是否有办法要求用户的文本输入长度在 10 到 140 个字符之间。

我已经把这段代码放在下面

if (text.characters.count <= 10 || text.characters.count >= 140) {
self.inputToolbar.sendButtonOnRight = false
}
else {
self.inputToolbar.sendButtonOnRight = true
}

在函数didPressSendButton等几个关键点:

override func didPressSendButton(button: UIButton!, withMessageText text: String!, senderId: String!,
senderDisplayName: String!, date: NSDate!) {

let itemRef = messageRef.childByAutoId() // 1
let messageItem = [ // 2
"text": text,
"senderId": senderId,
"location": getLocation()
]
itemRef.setValue(messageItem) // 3

// 4
JSQSystemSoundPlayer.jsq_playMessageSentSound()

// 5

finishSendingMessage()

Answers.logCustomEventWithName("Message sent", customAttributes: nil)

}

和我的addMessages 函数:

func addMessage(id: String, text: String, displayName: String) {
let message = JSQMessage(senderId: id, displayName: displayName, text: text)
messages.append(message)
}

像这样:

func addMessage(id: String, text: String, displayName: String) {

if (text.characters.count <= 10 || text.characters.count >= 140) {
self.inputToolbar.sendButtonOnRight = false
}
else {
self.inputToolbar.sendButtonOnRight = true
let message = JSQMessage(senderId: id, displayName: displayName, text: text)
messages.append(message)

}

但是这不起作用。

在我的 addMessages 函数中这样做对我来说有什么用处:

if (text.characters.count <= 10 || text.characters.count >= 140) {
// pass
}
else {
let message = JSQMessage(senderId: id, displayName: displayName, text: text)
messages.append(message)
}

在这种情况下,字符过滤器有效,但发送按钮仍处于启用状态,因此数据被发送到我的数据库,这是我不想要的。如果在文本输入不够长或太长时完全禁用发送按钮,对我来说效果会更好。

如果有人能帮我解决这个问题,那就太好了。谢谢!

最佳答案

您不应从栏中删除该按钮,而应将其禁用。我首先建议使用类似的方法为按钮设置禁用状态。

let sendButton = UIButton(frame: CGRect(x: 0, y: 0, width: 80, height: 35)) //You can change these values to fit your needs
sendButton.setTitle("Send", forState: .Normal)
sendButton.setTitleColor(UIColor.grayColor(), forState: .Disabled)
sendButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
sendButton.contentMode = .Center
self.inputToolbar?.contentView?.rightBarButtonItem = sendButton

然后您要根据输入字段中字符串的长度在该按钮上设置 userInteractionEnabled 属性。我们可以通过设置一个观察者来实现这一点。

首先获取对 inputField 的引用。 让 inputField = self.inputToolbar.contentView.inputView 然后在该字段上设置一个观察器并更改 sendButtons 状态。

NSNotificationCenter.defaultCenter().addObserverForName(UITextFieldTextDidChangeNotification, object: inputField, queue: NSOperationQueue.mainQueue()) { (notification) in
let text = self.inputField.text

if 语句不需要括号 ()。另外我会交换你的逻辑

if text.characters.count >= 10 && text.characters.count <= 140 {
if text == self.verifyPasswordField.text {
self.sendButton.enabled = true
} else {
self.sendButton.enabled = false
}
}

如果你想成为一个 swift 的忍者,你可以用它来速记。

self.sendButton.enabled = (text.characters.count >= 10 && text.characters.count <= 140)

只需将其放入函数中并确保调用它,就可以开始了。如果输入文本不符合条件,按钮应更新其颜色。但是你也可能想告诉你的用户,这就是按钮被禁用的原因,但这只是我的意见。如果您还有其他问题,我希望这有助于让我知道。 🖖🏽

关于swift - 如何限制用户文本输入并禁用 JSQMessagesViewController 中的发送按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com