gpt4 book ai didi

ios - 当 UISearchBar 的第一响应者更改 Controller 时,将文本设置为奇怪的效果

转载 作者:行者123 更新时间:2023-11-29 04:02:50 24 4
gpt4 key购买 nike

在我的应用程序中,我在 VC1(UIViewController) View 上有 UITextField。当我更改文本字段中的文本时,我调用另一个 Controller VC2 的推送,其 View 上带有 UISearchBar 。推送后,我将 UISearchBar 文本分配给 VC1 中的文本字段文本。

在 xib 上,我的文本字段已经有一些文本“测试字符串”。

当我在 VC1 文本字段中附加任何字符时 - VC2 推送和搜索栏上的文本是正常的。

但是当我按下 iPhone 键盘上的退格键时 - VC2 被按下,搜索字段上的文本开始逐字符删除,而整个字符串没有被清空。发生这种情况是因为委托(delegate)方法递归调用。

如何修复 UISearchBar 的行为?当 VC2 出现时,我必须在打开键盘的情况下激活搜索栏!这是主要条件。当然,如果我删除 [self.searchBarBecomeFirstResponder] 一切都会正常工作。

这里有一些代码:

@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

最佳答案

我已经检查了代码,由于某种原因,UIKeyboard 的辅助功能重复调用删除/退格键。我还没有找到原因,但一个解决方法是将 [self.searchBarBecomeFirstResponder]; 行放入 viewDidAppear 而不是 viewWillAppear code> - 这是一个可以接受的解决方法吗?键盘动画略有不同,但我不确定您的需求对此有多敏感。

关于ios - 当 UISearchBar 的第一响应者更改 Controller 时,将文本设置为奇怪的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com