2011-02-12 3 views
2

탐색 막대가 웹보기로 스크롤하는 Safari의 동일한 동작.스크롤 막대를 스크롤보기로 클립

나는 두 개의 스크롤 뷰를 사용하려고 시도했다. 첫 번째 스크롤 뷰는 탐색 표시 줄의 컨테이너이고 두 번째 스크롤 뷰는 스크롤 표시기가 숨겨져있다. 그것은 거의 사파리 에서 탐색 모음 같은 (탐색 모음 스크롤) 작동하지만, 여기에 문제가 있습니다 : 나는 속성을 설정하지 않은 경우에도,

  • 두 번째 스크롤 뷰의 스크롤 표시가 숨겨져 showsScrollIndictor ~ NO. 나는이 상태 표시 줄을 탭하면
  • , 그것은
+0

시도 스크롤보기의 속성 ScrollToTop을 설정합니다. – Sabby

답변

0

가 탐색 컨트롤러 (500)의 y 값을 시도하고 당신이 그것을 스크롤 할 수 있는지 처음 스크롤 뷰 (둥지 라)의 상부로 이동하지 않습니다. 할 수 있으면 문제는 음수 범위로 스크롤되지 않는다는 것입니다. 당신이보기 트리를 해킹 괜찮다면

+0

표시등이 켜짐 또는 꺼짐입니다. 내가 아는 한 그 주위에는 방법이 없습니다. [tableView setShowsHorizontalScrollIndicator : NO]; [tableView setShowsVerticalScrollIndicator : NO]; 여기에서 : http://stackoverflow.com/questions/821818/is-there-a-way-to-hide-the-scroll-indicators-in-an-uiscrollview – TigerCoding

0

놓습니다 UIToolbar과 같은 UIScrollView

+0

Apple 설명서에 따르면, 나는 UIWebView를 UIScrollView에 연결합니다. 그리고 네비게이션 바, 웹 주소를 입력하는 바 또는 뒤로/앞으로 버튼이있는 툴바가 아니라 Google 검색을 말합니다. – Espresso

+0

@Espresso 웹 뷰의 내용이 확대/축소 또는 스크롤 할 수 없다는 것을 확인하려면 (' 태그를 사용하고 뷰가 충분히 크다는 것을 보장하면), 'UIWebView' 'UIScrollView' 내부는 잘 작동합니다. 'stringByEvaluatingJavaScriptFromString :'과'clientHeight'를 사용하여 웹 뷰 델리게이트에서 동적으로 할 수있는 가장 중요한 것. 물론, 그것은 큰 _if_입니다. –

1

음에 당신의 UIWebView, 그냥 웹보기의있는 ScrollView에 하위 뷰로 추가하고, 다른 아래로 모든 것을 밀어 넣습니다. , 그리고, 당신은 또한 함께 "kTweenMargin"를 교체해야

UIScrollView * myScrollView; 
for (UIView * view in [myWebView subviews]) { 
    if ([view isKindOfClass:[UIScrollView class]]) { 
    myScrollView = (UIScrollView *) view; //probably first, but ya never know 
    } 
} 

for (UIView * view in [myScrollView subviews]) { 
    CGRect tempFrame = view.frame; 
    tempFrame.origin.y += kTextFieldHeight; 
    view.frame = tempFrame; 
} 
[myScrollView addSubview:urlField]; 

이 예뻐하려면 작동하는 것 같다; ([urlField self.view의 addSubview] 대신, WebViewController.m) 나는 애플의 UICatalog에서 그것을 시도 textFieldFrame에서 0 제거 webFrame 조정 :

webFrame.origin.y += kTopMargin + 5.0; 
    webFrame.size.height -= 40.0; 
+0

흠. 예를 들어 사파리만을 사용하는 것처럼 보이는 질문을 다시 읽으면 실제로 웹보기를 원하지 않습니까? 샘플 원칙이 적용되지 않겠습니까? NavigationBar를 scrollView에 배치하면됩니까? 수평 스크롤링을 원하지 않습니까? 그런 다음 스크롤 또는 확대/축소가 발생할 때마다 UIScrollViewDelegate를 구현하고 NavBar의 프레임을 조정할 수 있습니다. – mackworth

1

분명히, 그것은 해키 아마 갈 수있는 유일한 방법이라는 것을 의미 표준 행동이 아니다.

터치 이벤트를 UIWebView로 전달하는 대신 스크롤하는 것을 제외한 모든 상호 작용에서 스크롤보기를 차단할 수 있습니다. 이 라우팅은 메인 컨트롤러에서 수행하십시오.

사파리가 표준 툴바를 사용하지 않고 있습니다. 사파리가 웹 페이지 코드에 삽입하는 약간의 HTML 일 수 있습니다. UIWebView에는 loadHTML : 또는 유사한 메서드가 있습니다. Apple은 도구 모음으로 작동하기 위해 약간의 Javascript/이미지를 넣을 수 있습니다.

가장 어려운 해킹은 사용자가 웹보기에서 얼마나 멀리 스크롤했는지 감지 한 다음 툴바가 꺼질 때까지 동일한 양만큼 화면 상단에서 웹보기를 위로 이동하고 도구 모음을 위로 이동 한 다음 계속 진행하는 것입니다 정상적으로 스크롤 할 수 있습니다.

+0

그럴 수도 있지만, (위) 음의 범위로 스크롤 할 때 스크롤 인디케이터를 어떻게 이동합니까? 이것이 중첩 된 스크롤 뷰를 사용하여 완성한 것입니다. 위에 언급 된 문제를 제외하고 두 번째 스크롤 뷰가 맨 위에 도달 한 경우에만 네 스터 스크롤 뷰에 제어가 제공됩니다. – Espresso

+0

아마도 그럴 수 없습니다. 좀 더 자세히 살펴보면 Apple이 사용한 맞춤 솔루션이 더 많이있는 것으로 보입니다. 자신 만의 스크롤 표시기를 그릴 수 있습니까? 회색 직사각형이나 늘린 타원을 위아래로 움직이는 것은 그리 어렵지 않을 것이며, 사용자가 끝까지 스크롤 할 때 크기를 "압축"할 수 있습니다. 픽셀에 정확하게 이펙트를 복제 할 때 막히지 마십시오. 어쨌든 승인을 받으면 문제가 발생할 수 있습니다. – FeifanZ

관련 문제