菜鸟教程小白 发表于 2022-12-12 20:41:29

Objective-C - ScrollView 事件


                                            <p><p>我找到了一些可以完全解决我的问题的答案,但似乎我遗漏了一些步骤。我只是想拦截 ScrollView 的“ViewDidBlablabla”事件,所以我创建了一个自定义 UIScrollView 类。</p>

<h1>MyScrollView.m</h1>

<pre><code>#import &#34;MyScrollView.h&#34;

@implementation MyScrollView

- (id)initWithFrame:(CGRect)frame{
    NSLog(@&#34;initWithFrame&#34;);
    self = ;
    if (self) {
      // Initialization code
    }
    return self;
}

-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView{
    NSLog(@&#34;scrollViewWillBeginDragging&#34;);
    //scrollView.contentOffset
}

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
    NSLog(@&#34;scrollViewDidScroll&#34;);
}

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
    NSLog(@&#34;scrollViewDidEndScrollingAnimation&#34;);
}

@end
</code></pre>

<h1>MyScrollView.h</h1>

<pre><code>#import &lt;UIKit/UIKit.h&gt;

@interface MyScrollView : UIScrollView &lt;UIScrollViewDelegate&gt;

@end
</code></pre>

<p>当我分配我的自定义 ScrollView 时,我确实收到了控制台消息“initWithFrame”,但无法访问其他事件。我错过了什么?</p>

<p>如果您需要其他一些代码,请随时询问,但由于我使用了自定义的“initWithFrame”方法,我想错误应该在这里。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>尝试将您的 View 设置为自身的委托(delegate):</p>

<pre><code>if (self) {
    // Initialization code
    self.delegate = self;
}
</code></pre>

<p>从技术上讲,您不需要继承 <code>UIScrollView</code> 来响应滚动事件:将 <code>delegate</code> 设置为 <code><UIScrollViewDelegate>< 的实现就足够了</code>。</p>

<p>另外,<a href="https://stackoverflow.com/q/546095/335858" rel="noreferrer noopener nofollow">the <code>scrollViewDidEndScrollingAnimation:</code> method has been gone for about two years</a> ,因此不会在现代 iOS 安装中调用它。</p></p>
                                   
                                                <p style="font-size: 20px;">关于Objective-C -ScrollView 事件,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10399952/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10399952/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: Objective-C - ScrollView 事件