Mam widok internetowy, który wyświetla tabelę znacznie większą niż ekran. Kiedy próbuję przewijać je po przekątnej PO zbliżeniu - zarówno w środku, jak i na zewnątrz, zwykle przewija tylko w jednym kierunku zamiast po przekątnej. Czy to zachowanie wynika z przewijania widoku strony internetowej, czy też mogłem popełnić błąd w moich kodach?Ukośne przesunięcie w widoku sieci Web wypełnione błędem skryptu html po powiększeniu
ten sposób I wypełnić mój pogląd na stronie internetowej:
webViewContent.scrollView.bounces = false
webViewContent.scrollView.bouncesZoom = false
webViewContent.scrollView.delegate = self
webViewContent.scalesPageToFit = true
var htmlString = "<html><head>... ... a really long string that creates a table"
webViewContent.loadHTMLString(htmlString, baseURL: nil)
Proszę mów mi, jeśli htmlString może wpłynąć, nie obejmują go, ponieważ jest naprawdę długa.
Próbowałem również zsynchronizować widok z wierszem nagłówka o nazwie webViewTitle, który zapełniam używając podobnych kodów, ale tylko jeden wiersz. Kody synchronizacji wyglądają następująco:
func scrollViewDidZoom(_ scrollView: UIScrollView) {
if(scrollView != webViewTitle.scrollView){
var zoomPadding:CGFloat = 0.0
if((currentZoomScale*webViewContent.scrollView.zoomScale) < 1){
zoomPadding = 0.5*(-acos(currentZoomScale*webViewContent.scrollView.zoomScale)*180.0/CGFloat.pi)
}else{
zoomPadding = 0.5*acos(2-(currentZoomScale*webViewContent.scrollView.zoomScale))*180.0/CGFloat.pi
}
webViewTitle.scrollView.zoom(to: CGRect(x: webViewContent.scrollView.contentOffset.x,
y: (355*currentZoomScale*webViewContent.scrollView.zoomScale) + zoomPadding,
width: webViewTitle.scrollView.bounds.width/currentZoomScale/webViewContent.scrollView.zoomScale,
height: webViewTitle.scrollView.bounds.height/currentZoomScale/webViewContent.scrollView.zoomScale),
animated: false)
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
var zoomPadding:CGFloat = 0.0
if((currentZoomScale*webViewContent.scrollView.zoomScale) < 1){
zoomPadding = 0.5*(-acos(currentZoomScale*webViewContent.scrollView.zoomScale)*180.0/CGFloat.pi)
}else{
zoomPadding = 0.5*acos(2-(currentZoomScale*webViewContent.scrollView.zoomScale))*180.0/CGFloat.pi
}
if(scrollView == webViewTitle.scrollView){
webViewTitle.scrollView.contentOffset.y = (355*currentZoomScale*webViewContent.scrollView.zoomScale) + zoomPadding
webViewContent.scrollView.contentOffset.x = webViewTitle.scrollView.contentOffset.x
}else{
webViewTitle.scrollView.contentOffset.y = (355*currentZoomScale*webViewContent.scrollView.zoomScale) + zoomPadding
webViewTitle.scrollView.contentOffset.x = webViewContent.scrollView.contentOffset.x
}
}
Czy którekolwiek z nich spowodowało, że przekątne przewijanie stało się błędne?
Czy możesz opracować więcej o nazwie "super"? W tej implementacji nie podklasy "UIWebView" ani "UIScrollView". Ten fragment kodu znajduje się w mojej podklasie View Controller, nazywając 'super' tutaj, nazywam' UIViewController', który nie jest 'UIScrollViewdelegate'. Przez wywołanie 'superView' z' scrollView', nazywam 'contentView' mojego kontrolera widoku, który jest po prostu' UIView' –