Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当用户通过语音输入时,应用程序崩溃uitextview_Ios_Objective C_Crash_Uitextview_Voice - Fatal编程技术网

Ios 当用户通过语音输入时,应用程序崩溃uitextview

Ios 当用户通过语音输入时,应用程序崩溃uitextview,ios,objective-c,crash,uitextview,voice,Ios,Objective C,Crash,Uitextview,Voice,当用户在UITextView中通过语音输入文本时,应用程序崩溃 碰撞方法 点击文本视图,然后按键盘上的麦克风按钮,然后讲话,然后按完成,使该应用程序崩溃。 在我的情况下,uitextview没有做任何特殊的处理 控制台输出 * 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:“试图变异不可变 对象的DeleteCharactersRange:' 第一次抛出调用堆栈:(0x19443c1c0 0x192e7455c 0x19443c108) 0x1

当用户在UITextView中通过语音输入文本时,应用程序崩溃

碰撞方法

点击文本视图,然后按键盘上的麦克风按钮,然后讲话,然后按完成,使该应用程序崩溃。

在我的情况下,uitextview没有做任何特殊的处理

控制台输出

*

由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:“试图变异不可变 对象的DeleteCharactersRange:'

  • 第一次抛出调用堆栈:(0x19443c1c0 0x192e7455c 0x19443c108) 0x1943d9b18 0x19a58d138 0x194e1a3c4 0x1943fd958 0x1943fb9e4 0x194e1a218 0x19AA9AAAC8 0x19aa9b270 0x19aa9a0b4 0x19aa97680 0x19aa979f0 0x19aa9afd0 0x19aa9b50c 0x19cdbf800 0x19cdbf064 0x19cdbf74c 0x19cdc4354 0x1005e925c 0x1005e921c 0x1005ee284 0x1943e9f2c 0x1943e7b18 0x194316048 0x195d99198 0x19a2e9628 0x19a2e4360 0x1001e03c4 0x1932f85b8)libc++abi.dylib:终止于 NSException类型的未捕获异常

在进一步调试时(通过在控制台中输入bt),它给了我

'com.apple.main thread',停止原因=信号SIGABRT 帧#0:0x000000019340a014 libsystem_kernel.dylib
uu pthread_kill+8
帧#1:0x00000001934d1460 libsystem_pthread.dylib
pthread_kill+112 帧#2:0x000000019337e3f4 libsystem_c.dylib
abort+140
帧#3:0x0000000192e492d4 libc++abi.dylib
abort#u消息+132 帧#4:0x0000000192e66cc0 libc++abi.dylib
default_terminate_handler()+304
帧#5:0x0000000192e74844 libobjc.A.dylib
\u objc\u terminate()+124 帧#6:0x0000000192e6366c libc++abi.dylib
std::u终止(void(*)()+16
帧7:0x0000000192e62f84 libc++abi.dylib
帧#8:0x0000000192e74690 libobjc.A.dylib
objc_异常_抛出+364
帧#9:0x000000019443c108 CoreFoundation
+[NSException raise:格式:][116 帧#10:0x00000001943d9b18核心基础
mutateError+132
帧#11:0x000000019a58d138 UIKit
-[UIScrollView说明]+104 帧#12:0x0000000194e1a3c4基础
\n本地EFUNC+108的NSU描述
帧#13:0x00000001943fd958 CoreFoundation
u CFStringAppendFormatCore+7996 帧#14:0x00000001943fb9e4 CoreFoundation
\u cfStringCreateWith Format and ArgumentSaux2+244
框架#15:0x0000000194e1a218基础
+[NSString stringWithFormat:][68 帧#16:0x000000019AA9AA8UIKIT
-[UIDictionController InsertSerializedAdditionResult:withCorrectionIdentifier:+144
帧17:0x000000019aa9b270 UIKit
FinishDictionRecognitionWith短语:languageModel:correctionIdentifier:][U block\U invoke
+ 464
帧#18:0x000000019aa9a0b4 UIKit
-[UIDictionController性能更改文档:][48
帧#19:0x000000019aa97680 UIKit
-[UIDictionController\u runFinalizeOperation:+56 帧#20:0x000000019aa979f0 UIKit
-[UIDictionController setState:][612
帧#21:0x000000019aa9afd0 UIKit
-[UIDictionController使用短语完成听写识别:语言模型:更正标识符:] + 552 帧#22:0x000000019aa9b50c UIKit
-[UIDictionController DictionConnection:DidRecognitizePasses:languageModel:correctionIdentifier:]
+ 204
帧23:0x000000019cdbf800辅助服务
_TellSpeechDelegatedIdentificationSpeechPassages:languageModel:correctionIdentifier:][U block\U invoke
+ 80
帧#24:0x000000019cdbf064辅助服务
-[afdictionconnection
_dispatchCallbackGroupBlock:+240
帧#25:0x000000019cdbf74c辅助服务
_TellSpeechDelegatedIdentificationSpeechPasses:languageModel:correctionIdentifier:]
+ 356
帧#26:0x000000019cdc4354辅助服务
\uu 101-[aDictionConnectionsServiceDelegate
SpeechDid识别短语:使用SpeechModel:correctionContext:\u block\u invoke
+ 76
帧#27:0x00000001005e925c libdispatch.dylib
调度调用块和释放+24 帧28:0x00000001005e921c libdispatch.dylib
\u dispatch\u client\u callout+16
帧#29:0x00000001005ee284 libdispatch.dylib
\u dispatch\u main\u queue\u callback\u 4CF+1200 帧#30:0x00000001943e9f2c CoreFoundation
\uuuu CFRUNLOOP\u正在为主调度队列\uuuu提供服务\uuu+12
帧31:0x00000001943e7b18核心基础
帧#32:0x0000000194316048 CoreFoundation
CFRunLoopRunSpecific+444
帧#33:0x0000000195d99198图形服务
GSEventRunModal+180 帧#34:0x000000019a2e9628 UIKit
-[UIApplication\u run]+684
帧35:0x000000019a2e4360 UIKit
UIApplicationMain+208 *帧#36:0x00000001001e03c4
main(argc=1,argv=0x000000016fdd3ab8)+124位于main处。m:16
帧#37:0x00000001932f85b8 libdyld.dylib
start+4

使用的代码

@property(strong,nonatomic) UITextView *addressTextView;
- (void)viewDidLoad {
    [super viewDidLoad];
    addressTextView.delegate = self;
    addressTextView.text = [self.dictionaryEditObject objectForKey:@"location"];
}
-(void)textViewDidBeginEditing:(UITextView *)textView
{

}
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    NSLog(@"textViewShouldBeginEditing:");

    return YES;
}

-(void)textViewDidEndEditing:(UITextView *)textView
{
    NSLog(@"textViewDidEndEditing");
}

试穿 iOS:10.2,9.3 设备:iPad、iPod、iPhone 5s 在每个设备上崩溃

任何帮助都将不胜感激
谢谢

首先要做的是将UITextView子类化,并在该子类中覆盖func accessibilityActivate()->Bool。然后创建一个委托,处理激活TextView时发生的事情,并通过重写方法调用它

然后根据UIAccessibilityVoiceOverwring()设置TextView的委托,因此如果正在运行voice Overwring(),则将UITextViewDelegate设置为nil,以防止崩溃发生,然后激活操作由您在上面的子类中重写的方法处理。最后,s
@property(strong,nonatomic) UITextView *addressTextView;
- (void)viewDidLoad {
    [super viewDidLoad];
    addressTextView.delegate = self;
    addressTextView.text = [self.dictionaryEditObject objectForKey:@"location"];
}
-(void)textViewDidBeginEditing:(UITextView *)textView
{

}
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    NSLog(@"textViewShouldBeginEditing:");

    return YES;
}

-(void)textViewDidEndEditing:(UITextView *)textView
{
    NSLog(@"textViewDidEndEditing");
}