Swift UIButton:选定的表情符号消失

Posted

技术标签:

【中文标题】Swift UIButton:选定的表情符号消失【英文标题】:Swift UIButton : Selected Emoji disappear 【发布时间】:2016-03-01 14:37:55 【问题描述】:

我正在使用 5 UIButton,并且在此按钮中获取表情符号字符串。但问题是,当我单击按钮时,表情符号会在屏幕上消失。我猜这是突出显示或选择的颜色问题,但我没有弄清楚。我该怎么办?

我的代码:

func buttonSelectedNot()
    button1.selected = false
    button2.selected = false
    button3.selected = false
    button4.selected = false
    button5.selected = false


@IBAction func favoriteButtonAction(sender: UIButton) 

    // Save Data
    buttonSelectedNot()
    sender.selected  = !sender.selected;
    if (sender.selected)
    
        sender.selected = true
        emojiString = (sender.titleLabel?.text)!
        print(emojiString)

    
    else
    
        print("Not Selected");

    


快照:

【问题讨论】:

【参考方案1】:

嗯,从未使用过表情符号,但你的代码有点奇怪。单击按钮时,将所有按钮设置为selected = false,然后设置sender.selected = !sender.selected(这意味着sender.selected = true,前提是发件人是buttonsNotSelected() 中的按钮之一)。然后检查是否选择了sender,如果选择了,则再次将其设置为true,然后添加表情符号。

如果sender.selected = true 会发生什么?好吧,您将使用buttonsNotSelected() 将其设置为false,然后将其反转并将其设置为true,即使它可能应该是false(前提是sender 是所述方法中的按钮之一)。虽然不确定这是否有任何问题,但在我看来,表情符号消失的原因是因为 .selected 设置不正确。

试着清理一下你的代码

func buttonSelectedNot()
    button1.selected = false
    button2.selected = false
    button3.selected = false
    button4.selected = false
    button5.selected = false


@IBAction func favoriteButtonAction(sender: UIButton) 

    // Save Data
    sender.selected  = !sender.selected;
    if (sender.selected) 
        emojiString = (sender.titleLabel?.text)!
        print(emojiString)

     else 
        print("Not Selected");
    

    // SET ALL BUTTONS, EXCEPT SENDER, TO FALSE


【讨论】:

哦,我解决了这个问题。选择按钮没问题。当我选择按钮时,我会激活从发件人中选择的内容。我会回答我的问题:) 无论如何谢谢。【参考方案2】:

我解决了这个问题。问题是,您需要为按钮设置标题标签颜色。如果你不这样做,它就会消失。

解决的代码:

func buttonSelectedNot()
        button1.selected = false
        button2.selected = false
        button3.selected = false
        button4.selected = false
        button5.selected = false
    

    @IBAction func favoriteButtonAction(sender: UIButton) 

        // Save Data
        buttonSelectedNot()
        sender.selected  = !sender.selected;
        if (sender.selected)
        
            sender.selected = true
            emojiString = (sender.titleLabel?.text)!

            **//need to set title color for the button.**
            sender.setTitleColor(UIColor.blackColor(), forState: .Selected)
            print(emojiString)

        
        else
        
            print("Not Selected");

        
        sender.selected = true

    

快照:

而且看起来很完美:D

【讨论】:

以上是关于Swift UIButton:选定的表情符号消失的主要内容,如果未能解决你的问题,请参考以下文章

滚动时 UITableViewCell 的选定按钮消失

如何在不使用任何形式的查找表的情况下在 Swift for iOS 8 中列出(几乎)所有表情符号?

Swift/XCode 编辑类或 UIButton 的所有实例

UITableViewCell 图像在滚动时消失

出现和消失的 UIButton

swift 随机表情符号