gpt4 book ai didi

ios - 计时器显示/隐藏 subview

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:39 29 4
gpt4 key购买 nike

我遇到了一些问题,希望大家能帮忙

我有一个 scrollview ,当用户滚动一个 subview 时,它会从下到上显示动画。然后计时器开始计时 5 秒,然后调用另一个方法来隐藏 subview

我实现了并且它按需要工作,除了:当 subview 出现并且几乎要隐藏时,如果我在那一刻滚动, subview 会静态出现并且永远不会隐藏。尝试再次滚动另一个 subview 动态地在静态 subview 上工作(因为它重复或其他东西)

这是我控制 subview 显示和隐藏的代码

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(!show){


[self showSubview];
if (!myidleTimer)
[self resetIdleTimer];

}

}


-(void)resetIdleTimer
{


//convert the wait period into minutes rather than seconds
int timeout = kApplicationTimeoutInMinutes;// equal to 5 seconds
[myidleTimer invalidate];
myidleTimer = [NSTimer scheduledTimerWithTimeInterval:timeout target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO];

}

-(void)idleTimerExceeded
{

if (show){
[myidleTimer invalidate];
[self hideSubview];
show=false;

}
}

"show"是一个 bool 值,用于确保何时隐藏以及何时显示她是显示/隐藏实现

  -(void)hideSubview{


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


-(void) showSubview{

subview = [[UIView alloc] init ];

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

show=TRUE;

}

我希望这足够清楚,可以理解并能够帮助我确定问题所在提前致谢

最佳答案

如果您按照自己的方式创建计时器,则 ScrollView 滚动时计时器不会触发。相反,按如下方式创建它。

NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(doStuff:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:使用 defaultRunLoopMode 而不是 NSRunLoopCommonModes 将定时器添加到运行循环中,这是您希望在用户滚动时触发定时器的模式。

关于ios - 计时器显示/隐藏 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862993/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com