UITableview scrollsToTop按UINavigationbar

时间:2014-01-18 16:50:51

标签: ios uitableview scroll uinavigationbar pressed

我有UIView UINavigationBarUITabBarUITableView。 当我按状态栏时,UITableView会滚动到顶部,因为我已将其设置为TRUE

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

1 个答案:

答案 0 :(得分:2)

方法1:

如何在TapGestureRecogniser上添加UINavigationBar?这只有在导航栏上没有任何按钮时才有效。

//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.
}

这就是真的。

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

  1. 方法2:将启用的用户交互设置为是,并详细设置方法2中所示的点击手势识别器。
  2. 方法3:使用名为UIGestureRecognizerDelegate的{​​{1}}方法,并在触摸视图为按钮时返回gestureRecognizer:shouldReceiveTouch,否则返回NO。详见方法3。
  3. 从第1点开始的方法2: - 感觉很脏/ hackish

    YES

    第2点的方法3: - 更好,正确的方式

    [[self.navigationController.navigationBar.subviews objectAtIndex:1] setUserInteractionEnabled:YES]; [[self.navigationController.navigationBar.subviews objectAtIndex:1] addGestureRecognizer:tapRecognizer]; 文件中实施UIGestureRecognizerDelegate协议,并在.h文件中添加以下内容:

    .m