ITextView在成为firstResponder时使应用程序

ITextView在成为firstResponder时使应用程序

本文介绍了UITextView在成为firstResponder时使应用程序崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在UIView中有一个UITextView.使用viewLoad时,我在UIAlertView中有一个UIPickerView,并带有确定" 按钮.当我从选择器中选择任何值并单击确定" 时,我需要使 UITextView处于活动状态.
为此,我编写了UITextView[<myTextView> becomeFirstResponder];委托方法.一旦执行此方法,就会调用 textViewShouldBeginEditing 委托方法.此方法正确执行,在这里我返回了TRUE,但是之后执行返回到[<myTextView> becomeFirstResponder];行,然后应用程序崩溃.
UIAlertView委托方法如下:

I have a UITextView in a UIView. When viewLoad, I had a UIPickerView within a UIAlertView with "OK" button. When I select any value from picker and click "OK" I required to make UITextView active.
For that I have written [<myTextView> becomeFirstResponder]; delegate method of UITextView. As soon as this method execute it make textViewShouldBeginEditing delegate method to be invoked. This method executes correctly and I have return TRUE here, but after that the execution goes back to the line [<myTextView> becomeFirstResponder]; and then the application get crashed.
UIAlertView Delegate method is as below:

- (void)customIOS7dialogButtonTouchUpInside: (CustomIOS7AlertView *)alertView clickedButtonAtIndex: (NSInteger)buttonIndex
{
    NSLog(@"Button at position %d is clicked on alertView %d.", (int)buttonIndex, (int)[alertView tag]);
    [alertView close];
    [self.updateTV becomeFirstResponder];
}

在上述代码中,应用程序在[self.updateTV becomeFirstResponder];崩溃
崩溃日志显示如下:

Here in above code application crash at [self.updateTV becomeFirstResponder];
The crash log shows below:

2016-12-09 11:47:53.069049 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.069451 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.070530 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.070970 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.071223 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.072122 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.132574 oGoing[250:11235] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2016-12-09 11:47:53.136872 oGoing[250:11235] [MC] Reading from public effective user settings.
2016-12-09 11:47:53.370813 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.372515 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.372781 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.373559 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.373942 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.374133 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.374921 oGoing[250:11235] self.viewControllers lastObject ==<OGAddUpdateViewController: 0x17bebe00>
2016-12-09 11:47:53.477836 oGoing[250:11235] *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x6e208f0> should have parent view controller:<OGAddUpdateViewController: 0x17bebe00> but requested parent is:<UIInputWindowController: 0x17b81400>'
*** First throw call stack:
(0x1c38de07 0x1b5f3077 0x1c38dd4d 0x2146dd8b 0x21d43ba3 0x21d448cd 0x213e11bb 0x21d44655 0x21d3d1c9 0x21497b8f 0x213f9153 0x21456e15 0x21457181 0x2157ff83 0x1b04f5 0x287bb5 0x2140895d 0x214088eb 0x213f2a87 0x21408213 0x21407d5f 0x21402947 0x213d37c9 0x21b73c39 0x21b6d8db 0x1c349c8b 0x1c349795 0x1c347a6b 0x1c297073 0x1c296e81 0x1da3fbfd 0x2143eacf 0x21439201 0xed585 0x1ba6250b)
libc++abi.dylib: terminating with uncaught exception of type NSException

帮我摆脱困境.自2天以来,我一直处于这种状态.
我的项目已经在AppStore上,并且可以正常运行.但是,当我在iOS 10设备上运行它时,就会出现此问题.

提前谢谢

Help me get out of this. I am stuck in this since 2 days.
My project is already on AppStore and that is working correctly. But When I run it in iOS 10 device it create this issue.

Thank you in advance

推荐答案

尝试此方法,同时...

Try this it is working while ...

我以前遇到过这个问题.

I encountered this problem before.

问题:

您必须确保要分配给inputView或inputAccessoryView的视图不属于任何父视图.当您通过ViewController中的xib创建这些视图时,默认情况下会将它们设置为超级视图的子视图.

You have to ensure that the view you will assign to inputView or inputAccessoryView doesn't belong to any parent view. When you create these views from a xib inside a ViewController, by default they are set as subviews of a superview.

解决方案提示:

在要分配给inputView或inputAccessoryView的视图上使用方法removeFromSuperview

Use the method removeFromSuperview on the view you will assign to inputView or inputAccessoryView

来自: https://stackoverflow.com/a/25882277/3901620

在xib中:

[self.DatePickerView removeFromSuperview];
[Textfield setInputView:self.DatePickerView];
[Textfield setInputView:self.DatePickerView];

这篇关于UITextView在成为firstResponder时使应用程序崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 05:39