多个tableview 点击状态栏当前scrollView滚动到顶部

1、在 AppDelegate 判断是不是点击了状态栏
2、判断当前view是否在主窗口,并且是显示状态

//是否显示   #import "UIView+XMGExtension.h"
( BOOL )isShowingOnKeyWindow
{
   
// 主窗口
   
UIWindow *keyWindow = [ UIApplication sharedApplication ]. keyWindow ;
   
   
// 以主窗口左上角为坐标原点 , 计算 self 的矩形框
   
CGRect newFrame = [keyWindow convertRect : self . frame fromView : self . superview ];
   
CGRect winBounds = keyWindow. bounds ;
   
   
// 主窗口的 bounds self 的矩形框 是否有重叠
   
BOOL intersects = CGRectIntersectsRect (newFrame, winBounds);
   
   
return ! self . isHidden && self . alpha > 0.01 && self . window == keyWindow && intersects;
}

//点击判断
- ( void ) touchesBegan:( NSSet *)touches withEvent:( UIEvent *)event {
    [
super touchesBegan :touches withEvent :event];
   
CGPoint location = [[[event allTouches ] anyObject ] locationInView :[ self window ]];
   
CGRect statusBarFrame = [ UIApplication sharedApplication ]. statusBarFrame ;
    statusBarFrame.
origin . y += 0.5 ;
   
if ( CGRectContainsPoint (statusBarFrame, location)) {
        [
self windowClick ];
    }
}

- (
void )windowClick
{
   
UIWindow *window = [ UIApplication sharedApplication ]. keyWindow ;
    [
self searchScrollViewInView :window];
}

//判断是否为 UIScrollView
- ( void )searchScrollViewInView:( UIView *)superview
{
   
for ( UIScrollView *subview in superview. subviews ) {
       
// 如果是 scrollview, 滚动最顶部
       
if ([subview isKindOfClass :[ UIScrollView class ]] && subview. isShowingOnKeyWindow ) {
           
CGPoint offset = subview. contentOffset ;
            offset.
y = - subview. contentInset . top ;
            [subview
setContentOffset :offset animated : YES ];
        }

       
// 继续查找子控件
        [
self searchScrollViewInView :subview];
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值