我有一个带有一些按钮的应用程序,当按下这些按钮时,它们上的图像应该改变。我假设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
}
}
编辑:添加了必要的代码
答案 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像素。