iphone – UITextView textViewShouldBeginEditing在多次点击时
发布时间:2020-12-14 17:21:21 所属栏目:百科 来源:网络整理
导读:我有一个UIViewController.在这个控制器中,我以编程方式创建一个UITextView并将其委托设置为我的控制器.我这样做是因为我不想在点击它时开始编辑textView. ViewDidLoad方法 UITextView* textView = [[UITextView alloc] initWithFrame:CGRectMake(9,10,302,2
我有一个UIViewController.在这个控制器中,我以编程方式创建一个UITextView并将其委托设置为我的控制器.我这样做是因为我不想在点击它时开始编辑textView.
ViewDidLoad方法 UITextView* textView = [[UITextView alloc] initWithFrame:CGRectMake(9,10,302,200)]; [textView setDelegate:self]; [self.view addSubview:textView]; [textView release]; 我实现了textViewShouldBeginEditing方法,在这里返回NO以禁止键盘显示. textViewShouldBeginEditing方法 - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { NSLog(@"Shouldbegin"); return NO; } 出现的问题 当我点击textView它工作一次,但如果我再次点击它将导致应用程序崩溃而没有任何日志.当我持有textView并释放它时,它会像我希望它一样工作.另一方面,正常的单击不会再次工作. 编辑 单次快速攻击之后也似乎也能正常工作,因此在等待x秒后它似乎无法工作. 经过一些测试后我发现它似乎是iOS 5.X>错误.在4.3设备/模拟器中运行我的应用程序时,它的工作方式应该如此. iOS 5.1设备上的错误日志说明如下: Date/Time: 2012-04-17 14:00:49.497 +0200 OS Version: iPhone OS 5.1 (9B176) Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x00000014 Crashed Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 TextInput 0x36bf69e8 TI::Favonius::BeamSearch::choose_hit_test_node(WTF::RefPtr<TI::Favonius::SearchNode> const&,WTF::RefPtr<TI::Favonius::KeyAreaNode> const&,WTF::RefPtr<TI::Favonius::SearchNode> const&,WTF::RefPtr<TI::Favonius::SearchNode> const&) + 12 1 TextInput 0x36bf6d1e TI::Favonius::BeamSearch::update_for_touch(unsigned int,WTF::PassRefPtr<TI::Favonius::KeyAreaNode>) + 602 2 TextInput 0x36bfb5c2 TI::Favonius::StrokeBuildManager::update_search_for_touch(unsigned int,int) + 66 3 TextInput 0x36bfb97c TI::Favonius::StrokeBuildManager::key_down_or_drag_hit_test_for_UI(bool,CGPoint,double,int,float,bool,ZT::LayoutDictionaryContext&,int) + 216 4 TextInput 0x36bddf54 TIInputManagerZephyr::simulate_touches_for_input_string() + 344 5 TextInput 0x36bed8ba -[TIKeyboardInputManagerZephyr candidates] + 214 6 UIKit 0x31066616 -[UIKeyboardImpl generateAutocorrectionReplacements:] + 82 7 UIKit 0x31108a96 __71-[UITextInteractionAssistant scheduleReplacementsForRange:withOptions:]_block_invoke_0 + 370 8 UIKit 0x3110ec62 -[UITextSelectionView calculateAndShowReplacements:] + 6 9 Foundation 0x3762192c __NSFireDelayedPerform + 408 10 CoreFoundation 0x361a1a2c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 8 11 CoreFoundation 0x361a1692 __CFRunLoopDoTimer + 358 12 CoreFoundation 0x361a0268 __CFRunLoopRun + 1200 13 CoreFoundation 0x3612349e CFRunLoopRunSpecific + 294 14 CoreFoundation 0x36123366 CFRunLoopRunInMode + 98 15 GraphicsServices 0x324e3432 GSEventRunModal + 130 16 UIKit 0x30e70e76 UIApplicationMain + 1074 解决方法
我确实找到了解决方案.我真的不喜欢解决Apple漏洞,但有时你必须这样做.这是三个步骤……
1)用不可见的视图替换默认键盘 - (void)viewDidLoad { [super viewDidLoad]; myTextView.inputView = customKeyboard; } 2)回答“是”以允许编辑 - (BOOL)textViewShouldBeginEditing:(UITextView *)textView{ return YES; } 3)在textViewDidChangeSelection中重新签名第一个响应者以隐藏光标 - (void)textViewDidChangeSelection:(UITextView *)textView{ [textView resignFirstResponder]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |