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

时间:2012-07-25 05:56:08

标签: objective-c ios xcode uitextviewdelegate

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

  1. 设置UITextView不可编辑。
  2. 长按UITextView直到出现弹出窗口(复制,剪切......)。
  3. 关闭弹出窗口,并设置UITextView可编辑
  4. 点击UITextView,使UITextView进入编辑模式。
  5. 您将找到未调用的委托方法textViewShouldBeginEditing。
  6. 我需要调用textViewShouldBeginEditing来处理一些UI更改。谁知道怎么解决?非常感谢!

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

2 个答案:

答案 0 :(得分:7)

你或许忘了去:

myTextView.delegate = self;

额外信息

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

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

我不得不说:

// groupName is my UITextField
groupName.userInteractionEnabled = YES;
[groupName becomeFirstResponder];

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

答案 1 :(得分:0)

只有当你的textview成为第一响应者时,才会调用@Albert Zhang,“textViewShouldBeginEditing”。您可以通过执行以下操作来强制执行此操作。

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

    if(self.textView.editable)
    {
        [[self textView]becomeFirstResponder];
    }
}