我的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时弹出的复制粘贴。我认为这种方法看起来有点奇怪,但我刚刚发现它,它已经完成了应有的工作。
答案 0 :(得分:1)
当应用从后台返回时,UITextView
委托方法textViewDidChangeSelection:
将再次触发。所以其他东西必须在你的应用程序中进行。
为了确保我创建了一个包含2个UITextView
控件的简单应用,将其委托设置为视图控制器并添加了这段代码:
- (void) textViewDidChangeSelection:(UITextView *)textView
{
NSLog(@"Fire change selection.");
}
在对应用程序进行后台处理以及从后台恢复后都可以正常工作。
答案 1 :(得分:1)
为我解决问题的是打电话
[myTextView reloadInputViews]
在AppDelegate方法中:
-(void)applicationWillEnterForeground:
我不确切知道它为什么会起作用,所以如果有人有任何好的解释,那将非常感激。