我已经在界面生成器中创建了一个 UIScrollView,并且我已经正确地链接了这一切。当我尝试在 scrollV 上设置 userInteractionEnabled 时,它似乎并没有改变值(见下文):
我打印了许多值来检查正在发生的事情,但我很困惑:
(lldb) p self.scrollV.userInteractionEnabled
(BOOL) $3 = NO
(lldb) p self.scrollV.contentSize
(CGSize) $4 = (width=320, height=479)
(lldb) p self.scrollV.frame
错误:属性在“UIScrollView *”类型的对象上找不到“框架”错误:1 解析表达式错误
我发现 frame 属性没有显示很奇怪,但是当我自己打印出 scrollView 时,我得到以下信息:
(lldb) po self.scrollV
(UIScrollView *) $5 = 0x16f7a8d0<UIScrollView: 0x16f7a8d0; frame = (0 60; 320 312); clipsToBounds = YES; autoresize = RM+TM; gestureRecognizers = <NSArray: 0x16fb2630>; layer = <CALayer: 0x16f08860>; contentOffset: {0, 0}>
在我看来,这似乎意味着有 2 个 UIScrollViews 彼此独立工作,我最初使用 IBOutlet UIScrollView *scrollV; 将 scrollV 声明为如下实例变量;
但是,为了查看这是否由于某种原因导致问题,我也尝试使用:@property (nonatomic, retain) IBOutlet UIScrollView *scrollV; 并更改所有对“自我”的引用。
任何人都可以就为什么会发生这种情况提供任何建议吗?我目前正在使用以下函数将对象添加到 scrollV:
- (void)addTitle:(NSString *)title withText:(NSString *)text andPosition:(int *)yPos
{
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, *yPos, 312, 30)];
[titleLabel setTextColor:kBlueColor];
[titleLabel setText:[NSString stringWithFormat:@" %@", title]];
[titleLabel setFont:[UIFont boldSystemFontOfSize:18]];
*yPos += titleLabel.frame.size.height;
// Rounds up the int
int tbHeight = (([text length] + 40 - 1) / 40);
tbHeight = 19 + (19 * tbHeight);
UITextView *textV = [[UITextView alloc] initWithFrame:CGRectMake(4, *yPos, 312, tbHeight)];
[textV setTextColor:kBlueColor];
[textV setFont:[UIFont systemFontOfSize:14]];
[textV setScrollEnabled:NO];
[textV setShowsVerticalScrollIndicator:NO];
[textV setEditable:NO];
[textV setText:text];
*yPos += textV.frame.size.height + 5;
[self.scrollV addSubview:titleLabel];
[self.scrollV addSubview:textV];
}
我已经添加了代码,以防万一这些由于某种原因干扰了 scrollV。运行应用程序时会显示所有视图,因此 scrollV 肯定存在并且在 IB 中很好地链接起来。
任何关于这个问题的建议都将非常受欢迎。
谢谢!