在我的应用程序中,我UITextField
看到了 VC1( UIViewController
)。当我更改文本字段中的文本时,我UISearchBar
在其视图中调用另一个控制器 VC2 的推送。推送即时消息后,将UISearchBar
文本分配给 VC1 的文本字段文本。
在 xib 我的文本字段已经有一些文本“测试字符串”。
当我在 VC1 文本字段中附加任何字符时 - VC2 推送和搜索栏上的文本是正常的。
但是当我在 iPhone 键盘上按下退格键时 - VC2 被按下并且搜索字段上的文本开始逐个删除字符,而整个字符串没有被清空。它发生是因为委托方法递归调用。
如何解决这种行为UISearchBar
?当 VC2 出现时,我必须在打开键盘的情况下激活搜索栏!是主要条件。当然,如果我将[self.searchBar becomeFirstResponder]
全部删除将正常工作。
这里有一些代码:
@implementation ViewController1
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString * resultString = [textField.text stringByReplacingCharactersInRange:range withString:string];
ViewController2 * vc2 = [ViewController2 new];
[self.navigationController pushViewController:vc2 animated:YES];
[vc2 loadText: resultString];
return NO;
}
@end
@implementation ViewController2
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.searchBar becomeFirstResponder];
}
- (void) loadText: (NSString *) text
{
self.searchBar.text = text;
}
@end
问题示例源码:http: //yadi.sk/d/NJmTLot73_vrE