2012-07-31 52 views
0

我有一个文本视图,我正在从互联网进来聊天,并打印它,但我想要更多的颜色比textview必须格式化聊天。我的第一个自定义视图不滚动

我用scrollview替换textview,并在viewdidload中尝试(似乎工作)将视图类附加到它。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    _myconsoleview = [[ConsoleView alloc] initWithFrame:[self._scview bounds]]; 
    [_myconsoleview setBackgroundColor: [UIColor yellowColor]]; 
    [self._scview addSubview:_myconsoleview]; 
    [self._scview setNeedsDisplay]; 
} 

以及文本得到它没有滚动底部(我试图拖动文本与鼠标,寻找滚动条)。

所以这个例子的核心文本程序说哦很容易滚动。只是让我的自定义视图(ConsoleView)继承滚动视图本身。所以我试试这个,现在加上:

@interface ConsoleView :UIScrollView<UIScrollViewDelegate> 

仍然没有滚动。没有滚动条。没有迹象,我使用的是迄今为止的各种滚动的ipad模拟器。在ConsoleView中,我想最终做一些非常精细的事情,但现在我只是打印一个字符串。但是随着我追加更多文本,字符串变长。

我在我的sendtext方法中试过这个。这击中时,击中一个按钮发送他们在这个文本框服务器键入的文本:

[myconsoleviewid addNewText:newText]; 
    [_scview scrollRectToVisible:[_scview bounds] animated: TRUE]; 
    [_scview setNeedsDisplay]; 

老实说,我不知道我可以要求上述的工作,但我想通的东西可能会奏效。有任何想法吗?对于大约2个月前开始的ios编程,我相当陌生,并且迄今为止一直在开展工作。在java或android中,看起来并不像控制台滚动那么多,而不是将其添加到某个滚动控件中。但是IOS更加棘手。

Mike

编辑。这是我的绘制矩形,这是假设打印越来越长的字符串。其consoleview:

- (void)drawRect:(CGRect)rect 
{ 
    [super drawRect:rect]; 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetTextMatrix(context, CGAffineTransformIdentity); 
    CGContextTranslateCTM(context, 0, self.bounds.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); CGMutablePathRef path = CGPathCreateMutable(); //1 
    CGPathAddRect(path, NULL, self.bounds); 


    CTFramesetterRef framesetter = 
    CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attString); //3 
    CTFrameRef frame = 
    CTFramesetterCreateFrame(framesetter, 
          CFRangeMake(0, [attString length]), path, NULL); 

    CTFrameDraw(frame, context); //4 

    CFRelease(frame); //5 
    CFRelease(path); 
    CFRelease(framesetter); 
} 

回答

0

为了允许滚动,ScrollView的contentSize必须大于ScrollView的框架。正确设置这个属性,你应该没问题。

+0

如果我将整个滚动视图的内容大小设置为垂直20000,我的黄色背景停在一页,所以这看起来不对。如果我将我的视图设置为滚动视图为垂直方向2000,它会滚动,我看到我的黄色背景,我的视图仍然存在,但文本在第一页的最后一行之后仍然停止显示。 – LanternMike 2012-07-31 15:02:12

+0

我看到我没有接受答案。我最终改变了核心文本代码,但滚动问题仍然存在,我发现这是一个窍门,内容至少是一个更大的接受这个答案。 – LanternMike 2013-05-28 09:06:30

0

您需要设置scrollView.contentSize与滚动区域的适当的大小。

scrollView.contentSize = CGSizeMake(640, 320); // if you are in full screen and have two view one to other in horizontal

//垂直滚动,你需要做的

scrollView.contentSize = CGSizeMake(320, 640);

这个例子仅仅是用于滚动水平或垂直的一种方式,如果你设置了contentSize比视图框尺寸更大,如果意志可滚动。

+0

如果我只是打印一个长字符串我怎么知道大小?字符串只有文本,并且它有\ n个字符。同样在这一点上,我有两个滚动视图我猜。一个我拖动到故事板和hte视图我附加它也是一个滚动视图。我设定的尺寸是哪一个? – LanternMike 2012-07-31 14:23:15

+0

您需要设置scrollView的contentSize并且可滚动contentSize必须大于UIView框架的大小。因为该scrollView是在UIView。 – h4cky 2012-07-31 14:26:56

+0

我只想垂直滚动,因此我添加了_scview.contentSize = CGSizeMake(320,1040);.我这样做了我的整体滚动视图。我把我的看法附加到它只是一个UIView。以及我在我的视图上有一个黄色背景,当我滚动现在背景变成白色,并且没有文字。我是否认为错误?当我设置我的consoleView的内容大小之前,我做了一个uview,我也得到了一些滚动,但仍然没有新的文本打印在文本或一个屏幕的初始停止点下面。 – LanternMike 2012-07-31 14:47:22

相关问题