2012-07-31 3 views
0

텍스트보기가 있고 인터넷에서 들어 와서 인쇄 중이었지만 텍스트보기보다 더 많은 색을 원했습니다.내 첫 번째 사용자 지정보기가 스크롤되지 않습니다

나는 scrollview로 textview를 대체하고 viewdidload에서 필자는 내 view 클래스를 attach하려고 시도했다.

- (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 프로그래밍에 상당히 익숙하며 지금까지 계속해서 작업을 해왔다. 자바 또는 안드로이드에서는 스크롤을 콘솔에 추가하는 것이 스크롤 컨트롤에 추가하는 것보다 훨씬 더 많은 것처럼 보이지 않습니다. 그러나 IOS는 더 까다로워 보인다.

마이크

편집. 이것은 길이가 길어지는 문자열을 출력한다고 가정하는 그리기 직사각형입니다. 그것에서의 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 세로를 좋아하는 내보기를 설정하면 스크롤하여 내 노란색 배경을 볼 수 있지만 내보기는 지속되지만 텍스트는 페이지 1의 마지막 줄 뒤에 계속 표시되지 않습니다. – LanternMike

+0

나는 대답을 받아 들일 수 없다는 것을 알았다. 나는 핵심 텍스트 코드를 변경했지만, 여전히 스크롤 문제로,이 트릭을 발견했다. 적어도 하나는 더 크고,이 대답을 받아 들인다. – LanternMike

0

당신은 스크롤 영역의 적절한 크기 scrollView.contentSize을 설정해야합니다.

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

// 당신이보기 프레임 크기보다 더 큰 contentSize을 설정 한 경우이 예는 수평 또는 수직 스크롤 하나의 방법만을위한

scrollView.contentSize = CGSizeMake(320, 640);

을 할 필요가 스크롤 수직에 대한 경우의 뜻 스크롤 할 수 있어야합니다.

+0

단순히 긴 문자열을 인쇄하는 경우 크기를 어떻게 알 수 있습니까? 문자열에는 텍스트 만 있고 \ n 문자가 들어 있습니다. 또한이 시점에서 나는 두 개의 스크롤 뷰를 가지고 있다고 생각한다. 하나는 내가 스토리 보드 및 hte보기 내가 그것에 첨부 된 scrollview도에 끌고. 어느 크기로 설정했는지가 중요합니까? – LanternMike

+0

scrollView의 contentSize를 설정하고 스크롤 할 수 있도록 contentSize가 UIView 프레임 크기보다 커야합니다. 해당 scrollView UIView에 있기 때문에. – h4cky

+0

난 그냥 수직 스크롤 원하는 _scview.contentSize = CGSizeMake (320, 1040); 추가했습니다. 나는 이것을 전체적인 스크롤보기로 보았습니다. 나는 UIView에 첨부 된 내 견해를 만들었습니다.글쎄, 나는 내 배경에 노란 배경을 가지고 있는데, 지금 스크롤하면 배경이 흰색으로 바뀌고 아무 텍스트도 없다. 나는 틀린 시각을 붙였다? 내 consoleView 내용의 크기를 설정할 때 전에 uiview 만든, 일부 스크롤 있지만 여전히 텍스트 또는 한 화면의 초기 중지 지점 아래에 새 텍스트를 인쇄 있어요. – LanternMike

관련 문제