【问题标题】:Giving swip event to other control将滑动事件授予其他控件
【发布时间】:2009-05-24 13:43:42
【问题描述】:

我在 UIView 之上有一个 UITextView。它们位于 PageScrollView 中。用户可以在 UITextView 之外的任何地方滑动并轻扫下一页(视图)。我希望用户在 UITextView 上滑动并轻扫下一个视图。

当文本过多时,UITextView 会垂直滚动,用户可以滑动查看其余内容。视图分页水平滚动。我需要 UITextView 将其水平滑动到 UIView。我该怎么做?

【问题讨论】:

    标签: iphone cocoa-touch uiview uitextview


    【解决方案1】:

    如果您继承 UITextView 并覆盖它的每个触摸事件:

    • touchesBegan:withEvent:
    • touchesMoved:withEvent:
    • touchesEnded:withEvent:
    • touchesCancelled:withEvent:

    用这个:

    - (void) touchesXXX:(NSSet *)touches withEvent:(UIEvent *)event {
        [super touchesXXX:touches withEvent:event];
        [[self nextResponder] touchesXXX:touches withEvent:event];
    }
    

    这将允许UITextView 及其父视图处理所有触摸。由于您的 UITextView 仅垂直滚动,而您的 UIScrollView 仅水平滚动,因此效果很好。

    【讨论】:

    • 在touchesBegan中,为什么会有这行[touch locationInView: self.view];给出这个错误,“对成员视图的请求不是结构或联合”?我继承自 UITextView。
    • 如果我无法检测到滑动是否垂直,我如何知道何时将滑动移交给 PageScrollView?
    • UITextView 是一个视图,它不包含一个视图。请使用 locationInView:self。至于检测滑动是垂直还是水平,你不需要。让两个视图都处理两种类型的滑动,因为水平滑动对 UITextView 没有影响,而垂直滑动对 PageScrollView 没有影响,这无关紧要。
    • 谢谢。当我在 UITextView 上滑动但在 UITextView 上垂直滚动不起作用时,分页有效。有什么建议吗?
    • 只是为了确定,你也打电话给[super touchesXXX],对吧?如果你注释掉 nextResponder 行,应该会停止页面滚动,如果你注释掉 super 行,它应该停止文本视图滚动。
    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 2012-08-06
    • 2010-11-28
    • 1970-01-01
    • 2011-03-10
    • 2019-06-20
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多