(iOS,Xcode)有没有办法覆盖“点击状态栏向上滚动”行为?

Posted

技术标签:

【中文标题】(iOS,Xcode)有没有办法覆盖“点击状态栏向上滚动”行为?【英文标题】:(iOS, Xcode) Is there any way to override the "tap status bar to scroll up" behavior? 【发布时间】:2012-10-11 19:46:26 【问题描述】:

ios 中的标准手势之一是,通过点击状态栏(屏幕顶部的状态栏,显示您的信号级别、电池强度等),将自动滚动任何内容(例如,在表格视图中) 、滚动视图等)到顶部。

我正在编写一个与聊天服务器交互的应用程序。当收到新的聊天消息时,它们会被添加到 UITextView 的底部。用户当然可以回滚查看以前的聊天记录。

是否可以覆盖“点击状态栏”快捷方式,以便它可以调用我自己的方法之一,而不是滚动到顶部? (我的视图控制器中有一个方法可以自动将聊天窗口滚动到底部)。

【问题讨论】:

检查这个:***.com/questions/3753097/… 【参考方案1】:

这就是我想出的。关键是要覆盖scrollViewShouldScrollToTop: 方法。并返回 NO 以防止默认行为。 需要注意的一件事是,如果滚动视图的内容已经位于滚动视图的顶部,则不会调用 scrollViewShouldScrollToTop:。请参阅下面代码中的技巧。

@interface ViewController ()
<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end

@implementation ViewController

- (void)viewDidLoad

    [super viewDidLoad];

    self.scrollView.contentSize = CGSizeMake(self.view.bounds.size.width,
                                             self.view.bounds.size.height * 2);

    // if the scrollView contentOffset is at the top
    // (0, 0) it won't call scrollViewShouldScrollToTop
    self.scrollView.contentOffset = CGPointMake(0, 1);


- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView

    // call your custom method and return YES
    [self scrollToBottom:scrollView];
    return NO;


- (void)scrollViewDidScroll:(UIScrollView *)scrollView

    // be sure that when you are at the top
    // the contentOffset.y = 1
    if (scrollView.contentOffset.y == 0)
    
        scrollView.contentOffset = CGPointMake(0, 1);
    


- (void)scrollToBottom:(UIScrollView *)scrollView

    // do whatever you want in your custom method.
    // here it scrolls to the bottom
    CGRect visibleRect = CGRectMake(0, scrollView.contentSize.height - 5, 1, 1);
    [scrollView scrollRectToVisible:visibleRect animated:YES];


@end

【讨论】:

【参考方案2】:

试试这个:

- (void)myMethod 

    [myScrollableObject setScrollsToTop:NO];

任何继承 UIScrollView 的对象都应该有这个属性。

Reference

【讨论】:

以上是关于(iOS,Xcode)有没有办法覆盖“点击状态栏向上滚动”行为?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Xcode 7 上获得 iOS 7 模拟器

有没有办法在iOS 12.2上使用过时版本的Xcode和macOS运行应用程序?

使用Xcode / Swift或独角兽精灵灰尘在iPad上覆盖(阻止)或关闭iOS

如何从Xcode中的代码覆盖范围中排除Pod

在UI视图顶部的OpenGL GLKView覆盖 - iOS / Xcode

有没有办法在没有开发人员帐户或通过 Xcode 的情况下将应用程序部署到 iOS 设备?