我只用几句话就无法形容它。
@IBOutlet weak var ClubIntro: UILabel!
@IBOutlet weak var DetailButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func TouchDown(sender: AnyObject) {
if DetailButton.titleLabel?.text == "收回"{
ClubIntro.numberOfLines = 5
DetailButton.titleLabel?.text = "展开"
}
else {
ClubIntro.numberOfLines = 0
DetailButton.titleLabel?.text = "收回"
}
}
这是我的代码。我想很容易知道我想做什么。
但是这段代码并没有给出我想要的结果。
按钮的文字是"收回"默认值和标签的数字标记为0
所以,当我触摸按钮时。它将采用第一个IF句子并将按钮的标题文本更改为"展开"标签的编号为5。
但由于触摸的持续时间太长,然后在持续时间内,将再次调用TouchDown函数,然后将值更改回来。
我曾经考虑过中断句,但它只能在循环中使用。
那么,当我完成第一个IF句子时,如何退出TouchDown函数?
答案 0 :(得分:2)
第一个问题: - 你做错了!你应该抓住这个事件: -
UIControlEventTouchUpInside
手指在控件范围内的控件中的触摸事件。
第二个问题: -
我发现它已经很晚了,它之前已经回答: -
您没有正确设置按钮标题。
这应该是这样的: - DetailButton.setTitle("Button Title", forState: UIControlState.Normal)
答案 1 :(得分:1)
创建UIControlEventTouchUpInside
@IBAction func TouchUpInside(sender: AnyObject) {
let button = sender as UIButton
if button.titleLabel?.text == "收回"{
ClubIntro.numberOfLines = 5
sender.setTitle("展开", forState: UIControlState.Normal)
}
else {
ClubIntro.numberOfLines = 0
sender.setTitle("收回", forState: UIControlState.Normal)
}}
答案 2 :(得分:0)
首先,您应该将UIControlEventTouchUpInside
设置为控制事件标志,以便该按钮将检测应触发该方法的操作类型。此外,我们不确定这是否是您的预期行为,您应该始终查阅文档以找到您的愿望恒定标志。
在代码中,你可以在代码中设置这样的东西,或者从xib文件中按住ctrl + drag然后选择TouchUpInside
:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
因为我能读中文,我觉得你的逻辑有问题吗?您应该明白,将0分配给numberOfLines
实际上并不是将它作为0行。这意味着它将根据UILabel
的实际内容自动展开。