4

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 时不显示复制粘贴弹出。我觉得这个方法看起来有点奇怪,但我前段时间在 SO 上发现了它,它已经做了它应该做的。

4

2 回答 2

1

当应用程序从后台返回时,UITextView委托方法textViewDidChangeSelection: 将再次触发。因此,您的应用程序中必须发生其他事情。

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

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

在后台应用程序之前和从后台返回之后都可以正常工作。

于 2013-03-10T16:23:45.120 回答
1

为我解决问题的是打电话

[myTextView reloadInputViews]

在 AppDelegate 方法中:

-(void)applicationWillEnterForeground:

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

于 2013-03-11T21:05:37.733 回答