我是一个新手,我设法找到并调整代码,以便当我滑动标签时,该标签的值会发生变化。现在我的func只涉及一个特定的标签,但我想让多个标签具有完全相同的功能,它是一个统计标签,我如何修改/应用func到许多不同的标签?
这是我的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var counterLabel: UILabel!
@IBOutlet weak var kickLabel: UILabel!
var counter = 0
var swipeGesture = UISwipeGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
let direction: [UISwipeGestureRecognizerDirection] = [.up, .down, .left, .right]
for dir in direction{
swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.counterLabel(_:)))
counterLabel.addGestureRecognizer(swipeGesture)
swipeGesture.direction = dir
counterLabel.isUserInteractionEnabled = true
counterLabel.isMultipleTouchEnabled = true
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@objc func counterLabel(_ sender:UISwipeGestureRecognizer){
UIView.animate(withDuration: 1.0) {
if sender.direction == .right{
print("Swiped Right")
self.counter += 1
print(self.counter)
self.counterLabel.text = String(self.counter)
}else if sender.direction == .left{
print("Swiped Left")
print(self.counter)
self.counter -= 1
self.counterLabel.text = String(self.counter)
}else if sender.direction == .up{
print("Swiped Up")
self.counter += 5
self.counterLabel.text = String(self.counter)
}else if sender.direction == .down{
print("Swiped Down")
self.counter = 0
self.counterLabel.text = String(self.counter)
}
}
}
}
答案 0 :(得分:0)
UISwipeGestureRecognizer
已应用view手势。把它投到UILabel。
(您可能还需要检查手势状态以获得更好的性能。)
class ViewController: UIViewController {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
var counters: [UILabel: Int] = [:]
override func viewDidLoad() {
super.viewDidLoad()
for label: UILabel in [label1, label2] {
counters[label] = 0
for direction: UISwipeGestureRecognizerDirection in [.up, .down, .left, .right] {
let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(didSwipe(_:)))
swipeGesture.direction = direction
label.addGestureRecognizer(swipeGesture)
}
}
}
@objc func didSwipe(_ gestureRecognizer: UISwipeGestureRecognizer) {
guard gestureRecognizer.state == .recognized else { return }
guard let label = gestureRecognizer.view as? UILabel else { return }
debugPrint("\(gestureRecognizer.direction)")
switch gestureRecognizer.direction {
case .up:
counters[label] = counters[label] + 1
label.text = "Up"
case .down:
label.text = "Down"
case .left:
label.text = "Left"
case .right:
label.text = "Right"
default:
label.text = "???"
}
}
}