我的应用程序冻结的原因是我无法弄清楚,它不会崩溃但会冻结。
基本上我所做的是在我的视图中有一个隐藏在第一个位置的另一个视图,当我点击一个按钮后会出现这个视图,它包含一个UItextfield和一个UIPickerView。当我编辑UItextfield时,pickerview数据正在更新,我从picker视图中选择一个值,然后基本上按addButton,当我添加整个视图时将再次隐藏,并且pickerview的选定值将被添加到另一个UITextfield中图。
当我第一次这样做时它工作正常。它将主视图上的UI文本字段的值设置为正确的值。但是当我尝试更改它时,取消隐藏该视图并在pcikerview中选择另一个值并再次按下addButton应用程序冻结。没有崩溃。
我想告诉你这个主视图上UITextfield的值正在改变我在日志上检查了它。并且执行点击操作的方法完全有效。但它冻结了。
我无法理解,我需要一些帮助:)
编辑:
当我设置文本时,我发现主视图上的UITextField会导致此冻结
[myTextfield setText:@"somethng"];
UI冻结。当我发表评论时,它的效果非常好。但它第一次工作正常。第二次不起作用。
任何帮助将不胜感激。
编辑2(我添加了一些代码):
-(IBAction)addButtonClicked:(id)sender
{
leftBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(pickerViewDoneClicked:)];
[[self.navigationController.navigationBar.items objectAtIndex:0] setLeftBarButtonItem:leftBarButton];
[self.pickerContainer setHidden:NO];
}
-(IBAction)pickerViewDoneClicked:(id)sender
{
[[self.navigationController.navigationBar.items objectAtIndex:0] setLeftBarButtonItem:nil];
NSLog(@"%@", self.myTextField);
NSLog(@"old val %@", self.myTextField.text);
// the text field on the main view.
[self.myTextField setText: selectedText];
NSLog(@"new val %@", self.myTextField.text);
[self.pickerContainer setHidden:YES];
}
//in picker view source
selectedText = [pickerData objectAtIndex:row];
正如我在第一次添加时所说的那样,我可以看到文本字段上的值 但当我再次执行相同操作并单击完成时,应用程序会冻结。
我之前检查了文本字段的引用,没有引用丢失 我也可以看到新值和旧值。用户界面冻结了。
答案 0 :(得分:0)
我正在使用这段代码填充我的文本字段
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 15, 20)];
self.myTextField.leftView = paddingView;
self.myTextField.leftViewMode = UITextFieldViewModeAlways;
我不确定它是如何影响它但是第二次我将文本更改为文本字段时,我的屏幕被冻结了。
再次感谢您帮助我。
答案 1 :(得分:0)
只是为了确定:你没有在非主线程上对UIKit执行任何调用?