【问题标题】:Setting ContentOffset using buttons使用按钮设置 ContentOffset
【发布时间】:2017-03-01 20:02:28
【问题描述】:

我制作了一个带有几个按钮的 .xib 文件并将其附加到 inputAccessoryView。我使用 scrollView 使这部分可滚动,但是我必须使用按钮(箭头)添加额外的功能。单击前进箭头它应该走到尽头,后退箭头将采用原始位置。

我在 UI 中制作了整个 ScrollView,没有任何代码。效果很好,这些按钮位于此视图的顶部。我正在考虑使用这些按钮的 IBAction 并更改 ContentOffSet。我正在努力实施。我将不胜感激。

实现类:

#import "KCSearchInputAccessoryView.h"

 @implementation KCSearchInputAccessoryView

 + (KCSearchInputAccessoryView *)viewFromNib {
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
return [[bundle loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] lastObject];
}

- (IBAction)backBtnTapped:(id)sender {

 }

 - (IBAction)forwardBtnTapped:(id)sender {

 }

 @end

【问题讨论】:

    标签: ios objective-c button scrollview


    【解决方案1】:

    您可以通过更改 ContentOffset 来做到这一点,但是...

    假设您有对按钮的引用,更好的方法可能是使用func scrollRectToVisible(_ rect: CGRect, animated: Bool)

    IBAction func rightButton(sender: AnyObject) {
        self.theScrollView.scrollRectToVisible(postsButton.frame, animated: true)
    }
    
    IBAction func leftButton(sender: AnyObject) {
        self.theScrollView.scrollRectToVisible(chatsButton.frame, animated: true)
    }
    

    这也会“滑动”按钮。

    编辑:已经习惯了人们使用 Swift...

    Objective-C 版本...并且不使用单独的 Button 框架,只需在滚动视图内容的开头或结尾创建一个矩形:

    - (IBAction)backBtnTapped:(id)sender {
        CGRect r = CGRectMake(0.0, 0.0, 1.0, 1.0);
        [_theScrollView scrollRectToVisible:r animated:YES];
    }
    - (IBAction)forwardBtnTapped:(id)sender {
        CGRect r = CGRectMake(_theScrollView.contentSize.width - 1, 0.0, 1.0, 1.0);
        [_theScrollView scrollRectToVisible:r animated:YES];
    }
    

    这里的示例项目:https://github.com/DonMag/ScratchPad

    【讨论】:

    • 这很有趣。我已经编辑了我的问题,添加了带有实现的类。在 .h 文件中将这些按钮添加为 IBOutlet 等 myScrollView 使其对 .m 可见?不知道如何获得 scrollRectToVisible 的功能。
    • 我假设您以某种方式连接了“聊天”、“人脉”、“超级用户”等按钮?
    • 现在不行。只是在创建此视图时将它们添加到界面中。滚动完成后,我将在稍后添加功能。
    • 好的,然后继续将它们连接到 IBOutlets... 这样您就可以访问它们的框架了。
    • 好吧。 scrollRectToVisible 函数呢?我需要导入什么?
    猜你喜欢
    • 2022-10-26
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2022-12-23
    • 2013-11-20
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多