我有UIView
UINavigationBar
,UITabBar
和UITableView
。
当我按状态栏时,UITableView
会滚动到顶部,因为我已将其设置为TRUE
。
我希望能够通过按某些应用中发生的UINavigationBar
来做同样的事情。将UITableView
设置为scrollsToTop = TRUE
仅在用户按下StatusBar
时有效。
答案 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.
}
这就是真的。
有些人在向导航栏添加点按手势时发现他们的后退按钮停止工作,因此您可以执行以下两项操作之一:
UIGestureRecognizerDelegate
的{{1}}方法,并在触摸视图为按钮时返回gestureRecognizer:shouldReceiveTouch
,否则返回NO
。详见方法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