菜鸟教程小白 发表于 2022-12-12 17:49:26

ios - 显示/隐藏 subview 的计时器


                                            <p><p>我遇到了一些事情希望你们能帮忙</p>

<p>我有一个 scrollview ,当用户滚动 subview 时,会出现从下到上的动画。然后计时器开始计数 5 秒,然后调用另一个方法来隐藏 subview </p>

<p>我实现了,它按要求工作,除了:
当 subview 出现并且几乎要隐藏时,如果我滚动那一刻, subview 会静态显示并且从不隐藏。尝试再次滚动另一个 subview 动态地在静态 View 上工作(因为它重复或其他)</p>

<p>这是我控制 subview 显示和隐藏的代码</p>

<pre><code>    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if(!show){


      ;
          if (!myidleTimer)
      ;

    }

}


-(void)resetIdleTimer
{


    //convert the wait period into minutes rather than seconds
    int timeout = kApplicationTimeoutInMinutes;// equal to 5 seconds
    ;
    myidleTimer = ;

}

-(void)idleTimerExceeded
{

    if (show){
         ;
      ;
      show=false;

    }
}
</code></pre>

<p>"show"是一个 bool 值,用于确保何时隐藏和何时显示
她是显示/隐藏实现</p>

<pre><code>-(void)hideSubview{


    [UIView animateWithDuration:0.5
                     animations:^{
   subview.frame = CGRectMake(0, screenWidth, screenHeight, 60);//move it out of screen
                     } completion:^(BOOL finished) {
                         ;
                         subview.frame=CGRectMake(0,screenWidth, screenHeight, 0);
                     }];
      show=false;
}


-(void) showSubview{

    subview = [ init ];

    ;
    subview.frame = CGRectMake(0, screenWidth, screenHeight, 60);
    [UIView animateWithDuration:1.0
                     animations:^{
                         subview.frame = CGRectMake(0, screenWidth-60, screenHeight, 60);
                     }];

      show=TRUE;

}
</code></pre>

<p>我希望它足够清楚,可以理解并能够帮助我识别问题
提前致谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您按照自己的方式创建计时器,则在 ScrollView 时计时器不会触发。相反,请按如下方式创建它。</p>

<pre><code>NSTimer *timer = ;
[ addTimer:timer forMode:NSRunLoopCommonModes];
</code></pre>

<p>scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:使用 defaultRunLoopMode 而不是 NSRunLoopCommonModes 将计时器添加到运行循环,这是您希望在用户滚动时触发计时器的模式。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 显示/隐藏 subview 的计时器,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20862993/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20862993/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 显示/隐藏 subview 的计时器