Touch Up Inside无法正常工作

时间:2015-11-17 09:37:03

标签: ios xcode swift touch

我有一个带有一些按钮的应用程序,当按下这些按钮时,它们上的图像应该改变。我假设TouchUpInside在你按住并移开手指的同时仍然保持在元素区域内,但它只能很少工作,我不知道为什么。

我使用TouchUpInside代替TouchDown的原因是因为我希望用户能够取消操作。

如果我误解了有关这些事件的任何内容,并且已经被问过,我很抱歉。我找不到搜索网页问题的答案。

//The IBAction is set to trigger on TouchUpInside
@IBAction func action11(sender: UIButton) {
    setTile(sender)
}

func setTile(sender: UIButton) {
    if turn {
        print("O's turn")
        sender.setImage(xTile, forState: .Normal)
        turn = false
    }
}

编辑:添加了必要的代码

3 个答案:

答案 0 :(得分:0)

您可以使用UIButtons的一些属性来实现您想要的效果。 您可以使用默认和选定的uibutton状态来设置两个不同的图像。

在XIB中选择状态“默认”并将默认图像分配给该状态再次选择状态为“已选择”并在按钮部分后分配所需的图像。

并在按钮选择方法中添加以下行。

-(IBAction)buttonTapped:(UIButton *)sender{
     sender.selected = !sender.selected;
}

答案 1 :(得分:0)

您的理解是正确的,您需要使用touchUpInside。 我假设您正在尝试创建一个具有切换功能的按钮。只需轻轻一按,您就希望按钮具有值Say" X"并且当再次触摸时,按钮具有值" O"。

请看下面的代码,这应该可以胜任。

class ViewController: UIViewController {

var isButtonPressed = false{
    // Adding a Property Observer, that reacts to changes in button state
    didSet{
        if isButtonPressed{
            // Set the Value to X.

        }else{
            // Set the Value to O.
        }
    }
}

@IBAction func changeButtonValue(sender: UIButton) {
    // Toggle the button value.
    isButtonPressed = !isButtonPressed
}

}

答案 2 :(得分:0)

如果您没有在第一次之后设置turn=true,则执行此代码将只执行一次。

if turn {
    print("O's turn")
    sender.setImage(xTile, forState: .Normal)
    turn = false
}

检查按钮框架是否足够大以触摸手指。 Apple表示至少35x35像素。