【问题标题】:Get touch events in a UITextView在 UITextView 中获取触摸事件
【发布时间】:2011-01-07 16:05:50
【问题描述】:

Apple 不为UITextView 提供触摸事件处理。我正在开发的项目包括可读和可编辑的注释,我使用的是UITextView。请帮我解决这个问题——如何为我的项目获取触摸事件?

【问题讨论】:

    标签: objective-c cocoa-touch ios uitextview touch-event


    【解决方案1】:

    根据 Apple 文档,您可以为 UITextView 设置委托并实现 UITextViewDelegate。

    http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html

    具体来说,您可以通过实现 textViewShouldBeginEditing 来确定 UITextView 是否被触摸。

    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
    

    请务必在 UITextView 上设置委托属性以捕获事件。

    【讨论】:

    • 感谢回复 - (BOOL)textViewShouldBeginEditing:(UITextView *)textView;这些方法只会在 [textView seteditable:yes] 时调用;但如果我想更改某些文本背景的颜色,我必须禁用编辑。请让我知道如何在 ui-textview 的某个位置插入图像。如果可能的话,请在这里发布一些可靠的代码提前谢谢
    • 您无需禁用编辑功能即可更改背景!此外,您始终可以将 UITextView 包装在自定义 UIView 中,并在其上捕获触摸事件(必要时使用委托)。我这样做是为了轻松捕捉 MKMapView 上的触摸事件。这是一个很好的方法,并且不会损害您的 UITextViewDelegate 方法。
    【解决方案2】:

    只是想补充凯文的答案。 UITextView 继承自 UIScrollView。您应该获得在 UIScrollViewDelegate 协议中为文本视图声明的所有事件。

    我明白了:

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    

    当我将我的班级声明为 UITextView 的代表时。

    【讨论】:

      【解决方案3】:

      我用自己的逻辑解决了这个问题。

      在阅读时,我们在textview 上添加Custom View 并使用这些方法:

      (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
      (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
      

      但是当我们处于编辑模式时,就不可能了。无论如何,我的要求只是在可读模式下。

      感谢您对解决问题的所有支持。

      【讨论】:

        【解决方案4】:

        创建自定义文本视图并在自定义类中提供触摸事件。然后您可以在该自定义类的委托中创建方法。

        【讨论】:

          猜你喜欢
          • 2010-11-08
          • 1970-01-01
          • 2011-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多