【问题标题】:UIScrollView won't scroll, delegate methods never calledUIScrollView 不会滚动,从未调用过委托方法
【发布时间】:2015-08-21 01:57:24
【问题描述】:

我在UIScrollView 的子视图中有几个UILabel。我相信我已经将它设置为与我在另一个视图控制器中的功能 UIScrollView 完全一样,只有这个不会滚动。 contentSize 设置为 大于 比滚动视图 frame 大小和滚动视图 delegate 设置为 self。视图在 Interface Builder 中连接起来,UIScrollview 启用了滚动、反弹、用户交互和多点触控。孩子UIView 也启用了用户交互。这是我的代码:

.h 文件

#import <UIKit/UIKit.h>

@interface CreditsViewController : UIViewController <UIScrollViewDelegate>

@end

.m 文件

#import "CreditsViewController.h"

@interface CreditsViewController ()
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) IBOutlet UIView *contentView;

@end

@implementation CreditsViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.scrollView.delegate = self;
    _scrollView.contentSize = _contentView.frame.size;
    NSLog(@"scrollview frame size, contentview frame size: %f x %f, %f x %f", _scrollView.frame.size.width, _scrollView.frame.size.height, _contentView.frame.size.width, _contentView.frame.size.height);
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"in scrollViewWillBeginDragging");
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"in scrollViewDidScroll");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
@end

我得到 scrollview frame size, contentview frame size: 240.000000 x 128.000000, 320.000000 x 568.000000 作为日志打印输出,但我从未从委托方法中获得语句。滚动视图是视图控制器的唯一子项,因此当我尝试滚动时它应该接收触摸事件。怎么回事?

【问题讨论】:

  • 检查插座连接
  • contentSize 有多大?只有当内容大小大于滚动视图大小时它才会滚动
  • contentSize为320x568,大于scrollview frame size (240x128)。
  • 检查您的 XIB 中是否勾选了“用户交互启用”
  • 是的,网点是正确的,并且用户交互已启用。

标签: ios objective-c uiscrollview


【解决方案1】:

您需要实现 viewForZoomingInScrollView: 并返回您的 _contentView。

【讨论】:

  • 我不希望用户能够缩放,所以实际上我会返回 nil,但这并没有解决问题。
  • 对于不缩放设置 mininumScrollViewScale 和 maximumZoomScale = 1 的平移。我认为不赞成是因为如果在 IB 中正确设置了滚动视图和内容视图,那么您不需要 viewForZoomingInScrollView。如果您在代码中构建 UI,则需要此委托方法,但不要从中返回 nil。您确实需要按照 Fonix 的建议将 contentSize 设置为大于 scrollView 的可见区域。应该这样做。
  • 您对内容视图有限制吗?
  • 无限制。我已经在 IB 中构建了我的 UI,并且只添加了委托,以便能够查看方法是否被调用以试图找出它为什么不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 2014-12-28
  • 2011-08-12
相关资源
最近更新 更多