Ios 取消以前的性能请求,目标为:isn';他不为我工作
我要求默认情况下隐藏导航栏。如果用户点击屏幕,它会出现;如果用户点击第二次,它会消失;如果用户没有点击第二次,它会在3秒钟后消失 所以我实现了如下处理方法:Ios 取消以前的性能请求,目标为:isn';他不为我工作,ios,Ios,我要求默认情况下隐藏导航栏。如果用户点击屏幕,它会出现;如果用户点击第二次,它会消失;如果用户没有点击第二次,它会在3秒钟后消失 所以我实现了如下处理方法: - (void) navigationBarDisplay { [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(navigationBarHide) object:nil]; [[self navigationControl
- (void) navigationBarDisplay
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(navigationBarHide) object:nil];
[[self navigationController] setNavigationBarHidden:NO animated:YES];
[self performSelector:@selector(hideNavigationBar) withObject:self afterDelay:3.0];
}
- (void) navigationBarHide
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(navigationBarHide) object:nil];
[[self navigationController] setNavigationBarHidden:YES animated:YES];
}
我在每个函数开始时调用cancelPreviousPerformRequestWithTarget,以取消对performSelector:@selector(hideNavigationBar)的任何以前未完成的调用,从而重置内容,以便在显示导航栏后始终应用延迟3
但是,如果我点击屏幕使导航栏出现,则在3秒钟结束之前,我再次点击使其消失,然后第三次点击使其重新出现,然后在第一次点击后3秒钟自动隐藏,而不是第三次点击后3秒钟
我也试过了
[[NSRunLoop mainRunLoop ]cancelPerformSelector:@selector(navigationBarHide) target:self argument:nil];
但都一样
你知道为什么这样不行吗?或者是否有更好的解决方案?在我看来,您的“取消”与“执行”不匹配:
NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(hideNavigationBar) object:nil
vs
在一种情况下,“对象”是
nil
;另一方面,在我看来,您的“取消”与“执行”不匹配:
NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(hideNavigationBar) object:nil
vs
在一种情况下,“对象”是nil
;另一个是self