【问题标题】:Detect when a UITextView has finished scrolling检测 UITextView 何时完成滚动
【发布时间】:2021-02-01 21:00:35
【问题描述】:

有没有办法检测 UITextView 何时完成滚动?作为说明,我允许用户启用或禁用分页。

谢谢。

【问题讨论】:

    标签: iphone uitextview


    【解决方案1】:

    UITextViewUIScrollView 的子类,UIScrollViewDelegate 类用于控制与滚动相关的行为。它的一种方法是scrollViewDidEndDecelerating。您可以让您的视图控制器实现此协议,将您的UITextViewdelegate 属性设置为视图控制器,然后实现scrollViewDidEndDecelerating 方法。调用该方法时,UITextView 将完成滚动。例如:

    在.h中:

    @interface MyViewController : UIViewController <UIScrollViewDelegate>
    

    在.m:

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
        NSLog(@"Finished scrolling");
    }
    

    【讨论】:

    • 谢谢。除了将 UITextView 的委托属性设置为视图控制器之外,我想我得到了大部分内容。你能澄清一下吗? (我是新手)
    • 当然。一旦你有一个委托(在你的情况下,你的视图控制器),你需要告诉 UITextView 委托是谁。您可以在 Interface Builder 中直观地执行此操作(单击 UITextView,调出 Connections Inspector,从 delegate 属性拖动到文件的所有者),或在视图控制器的 viewDidLoad 方法内的代码中,使用类似“myTextView.delegate =自我;”
    • 谢谢!那行得通!一件事:当我通过代码(myTextView.delegate = self;)执行此操作时,我收到一条警告说“类 MYCLASS 未实现 UITextDelegate 协议”。有什么想法吗?再次感谢!!!
    • 顺便说一句,如果你有机会帮忙解决这个问题,已经为此工作了几天 -- stackoverflow.com/questions/1338318/… 谢谢!
    • 如果 MYCLASS 是您的 UIViewController 之一,那么它应该与我上面的 live 类似,即您需要将 添加到行尾。
    【解决方案2】:

    在斯威夫特中:

    class MyViewController: UIViewController, UITextViewDelegate {
    
        weak var textView: UITextView!
        
        override func viewDidLoad() {
            self.textView.delegate = self
        }
    
        func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
            ...
        }
    }
    

    UITextViewDelegate 继承 UIScrollViewDelegate

    【讨论】:

      猜你喜欢
      • 2021-03-11
      • 2010-11-02
      • 2018-11-22
      • 2012-12-07
      • 1970-01-01
      • 2015-08-15
      • 2019-02-09
      • 1970-01-01
      • 2018-04-09
      相关资源
      最近更新 更多