【问题标题】:UIScrolllView scroll limit positionUIScrolllView 滚动限制位置
【发布时间】:2016-02-20 04:18:48
【问题描述】:

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

我尝试在 -(void)scrollViewDidScroll:(UIScrollView *)scrollView 上将 scrollViewHeightConstraint.constant 设置为 scrollView.contentOffset.y 但没用,部分地图还在不可触摸。谁能给我一个建议,我该怎么办?谢谢!

截图:Screenshot

【问题讨论】:

  • 为什么在UIScrollView 中需要UITableView? UITableView 已经是 UIScrollView 的子类了。
  • 好吧,试着想象一下 :) 我有一个 mapKit,在它上面有一个 UITableView,我希望用户能够在地图上滚动 tableView 并将其隐藏,所以我'已经放了一个 UIScrollView 但地图不可触摸。你明白还是需要我发个图片?
  • 是的,请同时附上屏幕截图。
  • 好的,我已经更新了帖子。你明白我在做什么吗?
  • 我知道表格在地图上的放置方式,如果滚动视图覆盖地图,则无法触摸地图。

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


【解决方案1】:

好的。我想我明白你想要做什么。这是我想出的解决方案。让我知道这是否适合您。

首先,您需要在视图控制器中设置表格视图的contentInset(或者如果可以在情节提要中设置,请将其设置在那里。不确定是否可以?)。这是viewDidLoadviewWillAppear: 中的简单单行代码,如下所示:

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

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

self.tableView.contentInset = UIEdgeInsetsMake(self.view.bounds.size.height - 200.f, 0.f, 0.f, 0.f);

在您的内容正常后,现在您需要创建 UITableView 的子类以用作表格视图的类。此类应覆盖一种方法:hitTest:withEvent:。您可以在情节提要中设置用于表格视图的类(单击表格视图,然后转到身份检查器),或者如果您不使用情节提要,则可以在视图控制器中更改它。

在您覆盖的方法中,您正在检查用户触摸屏幕的位置是否在contentInset 上方(这适用于您的设计)。对于更复杂的设计,您需要一些更健壮的检查。

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

这是 UITableView 的子类(你可以随意命名):

EmbeddedTableView.h

#import <UIKit/UIKit.h>

@interface EmbeddedTableView : UITableView

@end

EmbeddedTableView.m

#import "EmbeddedTableView.h"

@implementation EmbeddedTableView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if (point.y < 0.f) {
        self.scrollEnabled = NO;
    } else {
        self.scrollEnabled = YES;
        return [super hitTest:point withEvent:event];
    }
    return nil;
}

@end

【讨论】:

  • 它不起作用。为什么我不能只改变 ScrollView 的高度?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
  • 2019-05-20
  • 2013-07-02
相关资源
最近更新 更多