菜鸟教程小白 发表于 2022-12-12 20:14:38

ios - UISlider 长按将其移动到 UITableView


                                            <p><p>我有一个带有多个自定义单元格的 uitableview,问题是我的一个自定义单元格中的 UISlider 很慢我需要按下它大约半秒才能移动它我想我可以使用 <code>delaysContentTouches</code> 来解决问题,但我不确定这是否是解决方案,如何实现?我认为这是一个焦点问题,因为我试图做一个简单的项目,一个带有 20 个 slider 的 uitableview,它工作得很好。我该如何解决这个问题?</p>

<p>这是我的代码:
对于 UITableView <code>cellForRowAtIndexPath</code> 方法:</p>

<pre><code>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
</code></pre>

<p>这里是 slider 单元格:</p>

<pre><code>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(&#34;slider value&#34;)
       print(sliderValue)
    }


    func display(block: Block){
      titleLabel.text = block.title
      slider.value = 1.0

    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您应该尝试禁用 UITableView 上的内容延迟触摸。这将使 slider 更具响应性并禁用每次触摸延迟。</p>

<p>为此,请尝试以下代码:</p>

<pre><code> override func viewDidLoad() {
      super.viewDidLoad()
      yourTableView.delaysContentTouches = false
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      for view in tableView.subviews {
            if view is UIScrollView {
                (view as? UIScrollView)!.delaysContentTouches = false
                break
            }
      }
      return numberOfRows
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UISlider 长按将其移动到 UITableView,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37487218/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37487218/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UISlider 长按将其移动到 UITableView