gpt4 book ai didi

iphone - scrollToTop 不适用于 iPhone 但它适用于 iPad

转载 作者:太空狗 更新时间:2023-10-30 03:44:17 27 4
gpt4 key购买 nike

我有两个 View Controller 。一个用于页面控制的 ScrollView ,一个用于详细信息(垂直滚动)。

当我在 iPhone 上单击状态栏时,scrollToTop 不起作用,而在 iPad 上,scrollToTop 起作用。

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

有人知道导致 iPhone scrollToTop 不工作的原因吗?

谢谢

编辑:我尝试调用 scrollView 委托(delegate)。在 iPad 中,这个代表被称为。- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView

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

编辑:尝试子类化 UIWindow(不工作)

窗口.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

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

AppDelegate.m

@synthesize window = _window;

最佳答案

据我了解,屏幕上同时有 2 个 UIScrollView。

根据我所见所闻,在 iOS 4 上并排有 2 个 UIScrollViews 会产生未定义的行为。其中一个 ScrollView 可能会滚动,有时是其他 ScrollView ,有时两者都不滚动。

在 iOS 5 上,如果你有 2 个 UIScrollViews 并排,然后点击状态栏“滚动到顶部”,UIScrollView 就在“你的点击下”

我不知道这是怎么回事,但这是我的观察。 iOS 5 很聪明!!

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

希望这对您有所帮助。

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

子类 或在 UIWindow 上添加类别并添加手势识别器/或实现 hitTest 仅检测 Y < 20 的点击等等,然后让它发送通知并在您的viewController 并以编程方式将 UIScrollView 滚动到顶部。

编辑

在 UIWindow 子类 (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];
}

关于iphone - scrollToTop 不适用于 iPhone 但它适用于 iPad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com