uiwebview가 pushviewcontroller와 함께 사용했을 때 Scrollstotop이 작동하지 않으며 솔루션을 찾고 있습니다.

StackOverflow https://stackoverflow.com/questions/1808063

  •  05-07-2019
  •  | 
  •  

문제

내비게이션 컨트롤러의 루트에 테이블 뷰가있는 앱이 있으며 테이블 셀을 선택할 때는 uiwebview (도구 모음 및 Navbar) 만 포함 된 새로운보기 컨트롤러가 표시됩니다.

새로운 웹보기를 제시하는 방법에 따라 사용자가 상단의 상태 표시 줄을 탭하고 WebView 스크롤을 맨 위에 올릴 수있는 기능을 작동하거나 작동하지 않습니다.

내가 사용하는 경우 :

  • (void) PresentModalViewController : (uiviewController *) ModalViewController 애니메이션 : (bool) 애니메이션

RootView에서는 WebView가 맨 위로 스크롤합니다.

해당 한 줄의 코드를 변경하고 대신 사용하는 경우 :

  • (void) pushviewcontroller : (uiviewController *) ViewController 애니메이션 : (bool) 애니메이션

내비게이션 컨트롤러에서 ScrollStotop 기능이 작동하지 않습니다.

그러나 앱의 맥락에서 다른 이유로 내가 실제로 사용하고 싶은 것은 pushviewcontroller 메소드입니다. 그러나 나는 또한 스크롤 스토프 동작을 유지하고 싶습니다.

나는 지금까지 다양한 접근법을 시도했는데, 일부는 여기에 설명되어 있습니다.

-WebView 내부 ScrollView ScrollStotop 속성을 설정하려고합니다

((UIScrollView *)[[webView valueForKey:@"_internal"] valueForKey:@"scroller"]).scrollsToTop = YES;

(눈에 띄는 효과 없음).

-새 뷰 푸시 후 "Window MakeyAndOrderFront"호출을 추가로 설정하지 않거나 설정하지 않음 -NAVBAR 속성을 설정하거나 설정하지 않습니다.

나는 "스크롤 스토프"속성을 주장 할 수있는 다른 견해가 있다고 생각하지 않습니다 (위의 첫 번째 테스트는 어쨌든이를 증명합니다).

Uiwebview를 uiscrollview에 포함 시키려고 시도하지 않으면 고통 스러울 것으로 기대합니다.이 문제를 해결하기 위해 노력하기 위해 경로가 부족했습니다.

다른 사람이 이것을 수정할 방법을 찾기를 바라고 있습니까?

도움이 되었습니까?

해결책 2

내가 Navbar를 사용자 정의하는 방식 때문에 작동하지 않았다는 것이 밝혀졌습니다. 나는 Uibarbuttonitem으로 Leftbarbuttonitem을 무시하고 전체 Navbar를 차지했습니다 (몇 달 전에 Apple 코드에서 그 접근 방식을 취했지만 확실하지 않다고 생각합니다). 나는 다른 관점에서 같은 접근법을 사용하고 있었고 스크롤 스토프는 거기서 잘 작동했습니다.

해당 코드를 꺼내고 사용자 정의 Navbar보기를 (예 : Self.NavigationController.titleView에 넣는 대신이 문제를 해결했습니다. 나는 그것이 다른 견해에 잘 맞는 이유를 알지 못합니다.

나는이 문제로 많은 시간을 낭비했기 때문에 여기에 묘사하여 다른 머리카락을 저장하기를 바랍니다. :)

다른 팁

반대로 접근 방식을 해결 방법으로 사용해보십시오.

루트보기 컨트롤러에서 :

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    self.tableView.scrollsToTop = NO;
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.tableView.scrollsToTop = YES;
}

안녕히 계세요!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top