UITableview滚动到顶部按UINavigationbar



我有一个UIView,有一个UINavigationBar,一个UITabBar和一个UITableView。当我按下状态栏时,UITableView滚动到顶部,因为我已将其设置为 TRUE .

我希望能够通过按下UINavigationBar来做同样的事情,就像在某些应用程序中发生的那样。 将UITableView设置为 scrollsToTop = TRUE 仅在用户按 StatusBar 时才有效。

方法 1:

UINavigationBar上添加TapGestureRecogniser怎么样?仅当您的导航栏上没有任何按钮时,这才有效。

//Create a tap gesture with the method to call when tap gesture has been detected
UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(navBarClicked):];
//isolate tap to only the navigation bar
[self.navigationController.navigationBar addGestureRecognizer:tapRecognizer];
//same method name used when setting the tapGesure's selector
-(void)navBarClicked:(UIGestureRecognizer*)recognizer{
    //add code to scroll your tableView to the top.
}

真的就是这样。

有些人发现在向导航栏添加点击手势时,他们的后退按钮停止工作,因此您可以执行以下两项操作之一:

    方法 2
  1. :将启用的用户交互设置为"是",并详细设置方法 2 中所示的点击手势识别器。
  2. 方法
  3. 3:使用名为 gestureRecognizer:shouldReceiveTouchUIGestureRecognizerDelegate方法,当触摸的视图是按钮时,使其返回NO,否则返回YES。详见方法 3。

方法 2 从第 1 点开始: - 感觉很脏/黑客

[[self.navigationController.navigationBar.subviews objectAtIndex:1] setUserInteractionEnabled:YES];
[[self.navigationController.navigationBar.subviews objectAtIndex:1] addGestureRecognizer:tapRecognizer];

方法3从第2点开始: - 好多了,正确的方法

.h文件中实现 UIGestureRecognizerDelegate 协议,并在.m文件中添加以下内容:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // Disallow recognition of tap gestures when a navigation Item is tapped
    if ((touch.view == backbutton)) {//your back button/left button/whatever buttons you have
        return NO;
    }
    return YES;
}

相关内容

  • 没有找到相关文章

最新更新