scrollToTop 在 iPhone 上不工作,但在 iPad 上工作

scrollToTop is not working on iPhone but it is working on iPad(scrollToTop 在 iPhone 上不工作,但在 iPad 上工作)
本文介绍了scrollToTop 在 iPhone 上不工作,但在 iPad 上工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有两个视图控制器.一个用于页面控制的滚动视图和一个用于详细信息的滚动视图(垂直滚动).

I have two view controller. One scrollview for page control and one for detail (scroll vertical).

当我在 iPhone 上单击状态栏时,scrollToTop 不起作用,而在 iPad 中,scrollToTop 正在工作.

When i click status bar on iPhone the scrollToTop not working, and in iPad the scrollToTop is working.

我确定 scrollView.scrollToTop 是 YES.因为我已经打印出来了.

I am sure that the scrollView.scrollToTop is YES. because i already print it.

谁知道是什么原因导致 iPhone 的 scrollToTop 不工作?

Anyone know what cause the iPhone scrollToTop not working?

谢谢

我尝试调用 scrollView 委托.在 iPad 中,这个委托被称为.- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView

I try by calling the scrollView delegate. in iPad this delegate its called. - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView

在 iPhone 中它不被调用.我已经同时使用了contentScrollView.delegate = self;但是iphone不工作:(

in iPhone it is not called. I already use both contentScrollView.delegate = self; But the iphone not working :(

尝试子类化 UIWindow(不工作)

Try subclassing UIWindow (not working)

窗口.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface Window : UIWindow
@end

窗口.m

 #import "Window.h"

 @implementation Window

 - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if ([event type] == UIEventTypeTouches && point.y < 250) {
    //Send Your Notification Here
    NSLog(@"KAROOO");
}
NSLog(@"HELLOWW");
return [super hitTest:point withEvent:event];
}
@end

AppDelegate.h

AppDelegate.h

@property (nonatomic, strong) IBOutlet Window *window;

AppDelegate.m

AppDelegate.m

@synthesize window = _window;

推荐答案

据我了解,您的屏幕上同时有 2 个 UIScrollView.

From what I understand you have 2 UIScrollViews simultaneously on screen.

据我所见&有经验的,在 iOS 4 上并排有 2 个 UIScrollView 会产生未定义的行为.其中一个滚动视图可能会滚动,有时可能会滚动,有时两者都不会.

From what I have seen & experienced, On iOS 4 having 2 UIScrollViews side by side gives undefined behaviour. One of the scrollview may scroll, sometimes other, sometimes neither.

在 iOS 5 上,如果您并排有 2 个 UIScrollView,然后点击状态栏滚动到顶部"UIScrollView 右侧在您的点击下"

On iOS 5 if you have 2 UIScrollViews side by side then tapping on status bar "scrolls to top" the UIScrollView right "under your tap"

我不知道这是如何工作的,但这是我的观察.iOS 5 很智能!!

I don't know how this works, but this has been my observation. iOS 5 is smart !!

如果您的 UIScrollViews 高于其他,则可能行为未定义.我没查过.

If your UIScrollViews are one above other then probably the behaviour is undefined. I haven't checked.

希望这会有所帮助.

如果你想让它正常工作,那么这里有一个可能的解决方案.

If you want to get it working anyways then here is a possible solution.

子类 或在 UIWindow 上添加一个类别并添加一个手势识别器/或实现仅检测 Y <的点击的 hitTest20 以此类推,然后让它发送通知并在您的 viewController 中收听,并以编程方式将 UIScrollView 滚动到顶部.

Subclass or Add a category on UIWindow and add a gesture recognizer / or implement hitTest that detects tap only for Y < 20 and so on and then have it send a notification and listen to this in your viewController and programmatically scroll the UIScrollView to top.

编辑

在 UIWindow 子类 (iPad) 中实现它

Implement this in the UIWindow subclass (iPad)

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if ([event type] == UIEventTypeTouches && point.y < 20 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
        NSLog(@"Portrait");
    } else if ([event type] == UIEventTypeTouches && point.y > 1004 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown) {
        NSLog(@"PortraitUpsideDown");
    } else if ([event type] == UIEventTypeTouches && point.x < 20 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft) {
        NSLog(@"LandscapeLeft");
    } else if ([event type] == UIEventTypeTouches && point.x > 748 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
        NSLog(@"LandscapeRight");
    }
    return [super hitTest:point withEvent:event];
}

这篇关于scrollToTop 在 iPhone 上不工作,但在 iPad 上工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

In which case that mapView:viewForAnnotation: will be called?(在这种情况下 mapView:viewForAnnotation: 会被调用吗?)
Why does a custom MKMapView annotation image disappear on touch?(为什么自定义的 MKMapView 注释图像在触摸时会消失?)
iPhone Map Kit cluster pinpoints(iPhone Map Kit 集群定位)
iPhone MKMapView Annotation Clustering(iPhone MKMapView 注解聚类)
NSString intValue not working for retrieving phone number(NSString intValue 不能用于检索电话号码)
Comparing in objective C - Implicit conversion of #39;int#39; to #39;id#39; is disallowed with ARC(在目标 C 中进行比较 - ARC 不允许将“int隐式转换为“id)