我的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.");
}
在应用程序背景和从后台返回之后都可以正常工作.