ios – 从后台返回时未调用UITextView委托方法textViewDidChangeSelection

我的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时不显示复制粘贴.我认为这种方法看起来有点奇怪,但我刚刚发现它,它已经做了它应该做的事情.

最佳答案 当应用程序从后台返回时,UITextView委托方法textViewDidChangeSelection:将再次触发.所以在你的应用程序中必须有其他东西.

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

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

在应用程序背景和从后台返回之后都可以正常工作.

点赞