菜鸟教程小白 发表于 2022-12-12 17:10:13

ios - 如何一次将事件从外滚动传递到内滚动


                                            <p><p>我有两个 ScrollView ,即一个在另一个里面,
-外卷轴
----InnerScroll</p>

<p>当outer ScrollView达到contentOffSet值大于300时,需要Outer scrollView自动停止,inner在单次滚动中启动。</p>

<p>到目前为止..</p>

<pre><code>-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    ;
    if (scrollView ==scrollSuperView)
    {

      if (scrollView.contentOffset.y&gt;300) {
            ;
      }else if (scrollView.contentOffset.y&lt;10){
            ;
      }

   }
}
</code></pre>

<p>顺便说一下scrollSuperView 是outerScroll 而scrollContentView 是inner。
任何帮助表示赞赏。</p>

<p>1.scrollSuperView(外)
帧 = CGRect(0, 0, 320, 468)
contentSize = CGSizeMake(320, 600)</p>

<p>2.scrollContentView(内部)
帧 = CGRect(0, 300, 320, 468)
contentSize = CGSizeMake(320, 600)</p>

<p>所以我有上面提到的两个 ScrollView ,外部和内部
一旦外部 scrollView 达到 >300 的内容偏移量,如果用户通过将手指放在内部 ScrollView 上进行滚动,则 scrollEvent 会被传递给内部 ScrollView..</p>

<p>希望现在更清楚。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>将外部 <code>scrollView</code> 的 <code>delaysContentTouches</code> 设置为 <code>NO</code> 会将触摸事件从外部 <code>scrollView</code> 传递到内部 <code>scrollView</code>... "<em>一步到位</em>"</p>

<pre><code>-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == scrollSuperView) {
      //outer scrollView
      if (scrollView.contentOffset.y &gt;= 300) {
            //NSLog(@&#34;Outer scrollView ContentOffset has reached 300&#34;);
            ;
            ;
      }
    }
    else if (scrollView == scrollContentView) {
      //inner scrollView
      if (scrollView.contentOffset.y == 0) {
            //NSLog(@&#34;Inner scrollView ContentOffset has reached 0&#34;);
            ;
            ;
      }
    }
}
</code></pre>

<hr/>

<p>假设:</p>

<ol>
<li><code>scrollSuperView</code> (<em>外部</em>)
<ul>
<li>frame = CGRect(0, 0, 320, 300)</li>
<li>contentSize = CGSizeMake(320, 600)</li>
<li>delaysContentTouches = YES</li>
<li>scrollEnabled = 是</li>
</ul></li>
<li><code>scrollContentView</code> (<em>内部</em>)
<ul>
<li>frame = CGRect(0, 400, 320, 200)</li>
<li>contentSize = CGSizeMake(320, 400)</li>
<li>delaysContentTouches = YES</li>
<li>scrollEnabled = 否</li>
</ul></li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何一次将事件从外滚动传递到内滚动,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20604913/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20604913/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何一次将事件从外滚动传递到内滚动