【问题标题】:Touch Up Inside not working properlyTouch Up Inside 无法正常工作
【发布时间】:2016-02-18 14:52:05
【问题描述】:

我有一个带有一些按钮的应用程序,当按下这些按钮时,它们上的图像应该会改变。我假设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
    }
}

编辑:添加必要的代码

【问题讨论】:

  • 发布您的代码。这样就很容易弄清楚了。
  • 请发布您的代码。
  • 您可以在按下 时和按下后使用高亮或选中进行更改。

标签: ios xcode swift touch


【解决方案1】:

您可以使用 UIButtons 的一些属性来实现您想要的。 您可以使用 uibutton 的 Default 和 selected 状态来设置两个不同的图像。

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

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

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

【讨论】:

  • 是的,我打算使用默认并突出显示。但是我想我只是不太明白这个事件是如何运作的。如前所述,有时当我按下按钮时会发生变化,因此它确实有效,但并非一直如此。如果我弄错了,你能解释一下TouchUpInside 事件是如何工作的吗?
  • 每当您点击该按钮时,它都会触发连接到 touchupinside 的 ibaction。它就像按钮单击一样工作。它不会改变按钮状态..您必须自己管理它...如果您打算使用突出显示,请使用此 sender.highlighted = !sender.highlighted;
【解决方案2】:

您的理解是正确的,您需要使用touchUpInside。 我假设您正在尝试创建一个具有切换功能的按钮。在一次触摸时,您希望按钮具有值说“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
}

}

【讨论】:

  • 按下按钮,它显示 X 并且不能再次更改值。我的问题是它并不总是在被触摸时做出反应。
【解决方案3】:

如果第一次之后不设置turn=true,则执行这段代码只会执行一次。

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

检查按钮框架是否足够大,可以让手指触摸。 苹果说至少 35x35 像素。

【讨论】:

  • 按钮是 100x100,我已经确保稍后在代码中再次使它成为 true。
猜你喜欢
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2021-12-24
  • 2012-07-23
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多