UIScrolllView滚动限制位置

时间:2015-11-18 12:19:30

标签: ios objective-c uitableview cocoa-touch uiscrollview

我在UIScrollView中有一个UITableView,我希望用户能够在触摸tableView时滚动(我在后台有一张地图,我希望用户能够在地图中集成tableView并不涵盖所有内容。

我尝试将scrollViewHeightConstraint.constant设置为 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 上的scrollView.contentOffset.y但它没有工作,部分地图仍然无法触及。任何人都可以给我一个建议我该怎么办?谢谢!

屏幕截图:Screenshot

1 个答案:

答案 0 :(得分:0)

行。我想我明白你要做的事情。这是我提出的解决方案。如果这对你有用,请告诉我。

首先,您需要在视图控制器中设置表格视图的TagBegin := Pos( '<img', S); // search position of first < ... TagBegin:= Pos( '<img', S); // search for next < (或者如果它可以在故事板中设置,请将其设置在那里。不确定是否存在?)。它是contentInsetviewDidLoad中的简单单行,如下所示:

viewWillAppear:

400.f只是说开始表格视图的内容从顶部400点。您可以将其设置为您喜欢的任何数字,或者如果您知道从底部需要200点,请执行以下操作:

self.tableView.contentInset = UIEdgeInsetsMake(400.f, 0.f, 0.f, 0.f);

当您的内容处于正常状态时,现在您需要创建UITableView的子类以用作表视图的类。此类应覆盖一个方法:self.tableView.contentInset = UIEdgeInsetsMake(self.view.bounds.size.height - 200.f, 0.f, 0.f, 0.f); 。您可以在故事板中设置您用于表视图的类(单击表视图,然后转到Identity Inspector),或者如果您不是,则可以在视图控制器中更改它使用故事板。

在您覆盖的方法中,您需要检查用户触摸屏幕的位置是否高于hitTest:withEvent:(适用于您的设计)。对于更复杂的设计,您需要更强大的检查。

这应该允许MKMapView拦截表视图中的滚动事件(返回nil并禁用滚动)。

这是UITableView子类(您可以根据需要命名):

EmbeddedTableView.h

contentInset

EmbeddedTableView.m

#import <UIKit/UIKit.h>

@interface EmbeddedTableView : UITableView

@end