2012-07-31 55 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

相關問題