不可编辑时未调用的textViewShouldBeginEditing变为可编辑

Alb*_*ang 4 xcode objective-c uitextviewdelegate ios

我在UITextFieldDelegate上遇到了问题,任何人都可以帮助我,我将非常感激.有一个UITextView,我实现了它的委托.通常所有委托方法都称为非常好.但在这种情况下:

  1. 设置UITextView不可编辑.
  2. 长按UITextView直到出现弹出窗口(复制,剪切,...).
  3. 关闭弹出窗口,并设置UITextView可编辑
  4. 点击UITextView使UITextView进入编辑模式.
  5. 你会发现没有调用委托方法textViewShouldBeginEditing.

我需要调用textViewShouldBeginEditing来处理一些UI更改.谁知道怎么解决?非常感谢!

测试项目:我创建了一个简单的测试项目,它将NSLog调用方法,你可以快速测试我的情况,谢谢!源代码在这里:http://goo.gl/tGQS5

Zha*_*ang 7

你或许忘了去:

myTextView.delegate = self;

?

额外的信息

在我最近发布的应用程序中,我做了类似的事情.

我禁用了UITextField,因此我可以在UITableViewSectionHeader上使用长按手势来编辑节标题的名称,然后单击节标题以选择它.

我不得不说:

// groupName is my UITextField
groupName.userInteractionEnabled = YES;
[groupName becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

在我的长按手势识别器回调方法.


Sri*_*nth 0

@Albert 张,仅当您的文本视图成为第一响应者时才会调用“textViewShouldBeginEditing”。您可以通过执行以下操作来强制它。

- (IBAction)onSwitch:(id)sender{
    self.textView.editable = self.editableSwitch.on;

    if(self.textView.editable)
    {
        [[self textView]becomeFirstResponder];
    }
}
Run Code Online (Sandbox Code Playgroud)