【发布时间】:2013-02-25 17:43:12
【问题描述】:
我的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上发现了它,它已经做了它应该做的。
【问题讨论】:
-
也许您的视图控制器正在后台释放并在进入前台时重新创建。然后, textView.delegate 将为零。你能测试一下吗?
-
我在appDelegate的didBecomeActive方法中测试了它是否为nil,它不是。我还测试了在该方法中再次将 ViewController 设置为委托。
-
也许你的 textView 正在变为零。尝试在 viewDidAppear 中设置委托:例如。
-
我的 textview 没有变为零。我可以设置它的文本,这很有效。只有委托方法没有被调用。真的很奇怪。
-
发布一些代码。我刚刚创建了一个带有
UITextView的新项目并为它实现了textViewDidChangeSelection:。选择我的文本视图后,我点击主页按钮,然后再次启动应用程序。键盘仍处于启动状态,该方法再次触发。
标签: ios cocoa-touch uitextview uitextviewdelegate