从后台返回时不会调用UITextView委托方法textViewDidChangeSelection

时间:2013-03-10 14:47:03

标签: ios cocoa-touch uitextview uitextviewdelegate

我的ViewController实施UITextView委托方法textViewDidChangeSelection。测试时,一切都按预期工作。但是,如果将应用程序放在后台,然后再次变为活动状态,则在更改TextView中的选择时不会调用委托方法。有其他人有这个问题吗?

我的UITextView子类执行此操作:

self.inputView = [[UIView alloc] initWithFrame:CGRectZero];

以上是为了让键盘不显示,但同时保持启用TextView。

子类也这样做:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{
{
    if ( [UIMenuController sharedMenuController] )
    {
        [UIMenuController sharedMenuController].menuVisible = NO;
    }
    return NO;
}

这是为了不显示单击UITextView时弹出的复制粘贴。我认为这种方法看起来有点奇怪,但我刚刚发现它,它已经完成了应有的工作。

2 个答案:

答案 0 :(得分:1)

当应用从后台返回时,UITextView委托方法textViewDidChangeSelection: 再次触发。所以其他东西必须在你的应用程序中进行。

为了确保我创建了一个包含2个UITextView控件的简单应用,将其委托设置为视图控制器并添加了这段代码:

- (void) textViewDidChangeSelection:(UITextView *)textView
{
    NSLog(@"Fire change selection.");
}

在对应用程序进行后台处理以及从后台恢复后都可以正常工作。

答案 1 :(得分:1)

为我解决问题的是打电话

[myTextView reloadInputViews]

在AppDelegate方法中:

-(void)applicationWillEnterForeground:

我不确切知道它为什么会起作用,所以如果有人有任何好的解释,那将非常感激。