UISlider 长按以在 UITableView 中移动它
UISlider long touch to move it in a UITableView
我有一个带有多个自定义单元格的 uitableview,问题是我的一个自定义单元格中的 UISlider 很慢我需要按下它大约半秒钟才能移动它我想我可以使用delaysContentTouches
来解决问题,但我不确定这是否是解决方案,如何实施?我认为这是一个焦点问题,因为我试图做一个简单的项目,一个带有 20 个滑块的 uitableview,它工作得很好。我该如何解决这个问题?
这是我的代码:
对于 UITableView cellForRowAtIndexPath
方法:
let cell = tableView.dequeueReusableCellWithIdentifier(CurrentFormTableView.CellIdentifiers.SliderCell, forIndexPath: indexPath) as! SliderCell
cell.delegate = self
cell.slider.tag = indexPath.row
cell.display(block)
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
这里是滑块单元格:
class SliderCell: UITableViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var maxLegendLabel: UILabel!
@IBOutlet weak var minLegendLabel: UILabel!
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var answerLabel: UILabel!
var delegate: QuestionSliderCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
isFirstResponder()
}
@IBAction func slideAction(sender: UISlider) {
let sliderValue = Int(sender.value)
print("slider value")
print(sliderValue)
}
func display(block: Block){
titleLabel.text = block.title
slider.value = 1.0
}
}
您应该尝试禁用 UITableView 上的内容延迟触摸。这将使滑块更灵敏并禁用所有触摸延迟。
为此请尝试以下代码:
override func viewDidLoad() {
super.viewDidLoad()
yourTableView.delaysContentTouches = false
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
for view in tableView.subviews {
if view is UIScrollView {
(view as? UIScrollView)!.delaysContentTouches = false
break
}
}
return numberOfRows
}
我有一个带有多个自定义单元格的 uitableview,问题是我的一个自定义单元格中的 UISlider 很慢我需要按下它大约半秒钟才能移动它我想我可以使用delaysContentTouches
来解决问题,但我不确定这是否是解决方案,如何实施?我认为这是一个焦点问题,因为我试图做一个简单的项目,一个带有 20 个滑块的 uitableview,它工作得很好。我该如何解决这个问题?
这是我的代码:
对于 UITableView cellForRowAtIndexPath
方法:
let cell = tableView.dequeueReusableCellWithIdentifier(CurrentFormTableView.CellIdentifiers.SliderCell, forIndexPath: indexPath) as! SliderCell
cell.delegate = self
cell.slider.tag = indexPath.row
cell.display(block)
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
这里是滑块单元格:
class SliderCell: UITableViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var maxLegendLabel: UILabel!
@IBOutlet weak var minLegendLabel: UILabel!
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var answerLabel: UILabel!
var delegate: QuestionSliderCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
isFirstResponder()
}
@IBAction func slideAction(sender: UISlider) {
let sliderValue = Int(sender.value)
print("slider value")
print(sliderValue)
}
func display(block: Block){
titleLabel.text = block.title
slider.value = 1.0
}
}
您应该尝试禁用 UITableView 上的内容延迟触摸。这将使滑块更灵敏并禁用所有触摸延迟。
为此请尝试以下代码:
override func viewDidLoad() {
super.viewDidLoad()
yourTableView.delaysContentTouches = false
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
for view in tableView.subviews {
if view is UIScrollView {
(view as? UIScrollView)!.delaysContentTouches = false
break
}
}
return numberOfRows
}