【问题标题】:textViewShouldBeginEditing not called when not editable become to editable不可编辑时未调用 textViewShouldBeginEditing 变为可编辑
【发布时间】:2012-07-23 12:27:27
【问题描述】:

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

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

我需要调用 textViewShouldBeginEditing 来处理一些 UI 更改。任何人都知道如何解决它?非常感谢!

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

【问题讨论】:

    标签: objective-c ios xcode uitextviewdelegate


    【解决方案1】:

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

    - (IBAction)onSwitch:(id)sender{
        self.textView.editable = self.editableSwitch.on;
    
        if(self.textView.editable)
        {
            [[self textView]becomeFirstResponder];
        }
    }
    

    【讨论】:

    • 感谢 SRIKANTH,我已经尝试过了,但不起作用。如果在不可编辑时长按,textViewShouldBeginEditing 仍然不会被调用。
    • 您想在长按 textview 时让 textview 可编辑吗?
    • 不,我要监控 UITextView 的编辑状态:将开始编辑,已开始编辑,将结束编辑,已结束编辑。以前 UITextField 是不可编辑的,我想通过其他一些控件将其切换到编辑模式,可能是单击一个按钮。但是当你在不可编辑时长按,然后将其切换到编辑模式时,方法 textViewShouldBeginEditing 将不会被调用。
    【解决方案2】:

    你是不是忘了去:

    myTextView.delegate = self;

    ?

    额外信息

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

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

    我不得不说:

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

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

    【讨论】:

    • 是的,我已将它设置在故事板中。通常会调用所有委托方法。但是当你在不可编辑模式下长按textview,然后将其更改为可编辑模式时,textViewShouldBeginEditing 将不会被调用。
    • 在你的 ViewController 头文件中,你有 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多