gpt4 book ai didi

ios - iOS 7.1 中 UISearchBar 的 UITextField

转载 作者:行者123 更新时间:2023-11-28 17:58:31 25 4
gpt4 key购买 nike

我正在访问搜索栏的文本字段。这一直在变化

我使用的是 iOS 6

    textField = [searchbar.subviews objectAtIndex:1];

它在 iOS 7 中发生了变化,有一个 View ,其中有一个我们可以从中获取 textField 的 subview ,所以我在 iOS 7 或更高版本的 iOS 中使用以下代码

    UIView *searchbarview = [searchbar.subviews objectAtIndex:0];
NSLog(@"searchbarview.subviews Array is %@",searchbarview.subviews.description);
textField = (UITextField *)[searchbarview.subviews objectAtIndex:1];

现在,自 iOS 7.1 起,searchbarview 只有一个 subview ,即 UISearchBarBackground,不像 iOS 7.0,它有两个 subview ,所以即使我使用 for 循环遍历所有 subview ,我也无法获取 textField

谁能帮我解决这个问题谢谢,

编辑这是 searchbarview.subviews 返回的数组日志,你可以看到它只返回 1 个对象 UISearchBarBackground ,所以我想知道 UITextField 对象在哪里

searchbarview.subviews Array is (
"<UISearchBarBackground: 0xe6bc9d0; frame = (0 0; 768 50); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xe6bcb20>>"
)

最佳答案

我在 iOS 7.1 的模拟器上测试过。我看到 UISearchBar 的结构是这样的:

=============================================

UISearchBar

++ 界面 View

++++ UISearchBar背景

++++ UISearchBarTextField(这是 UITextField 对象)

++++++++ _UISearchBarSearchFieldBackgroundView

++++++++ UIImageView

=============================================

take from Spark Inspector

因此在 iOS 7.1 上,您可以像这样获取 UITextField:

UIView *subviews = [searchbar.subviews lastObject];
UITextField *textView = (id)[subviews.subviews objectAtIndex:1];

=============================================

更新

如果您的 UISearchBarUIViewController 中,请在方法 viewDidLoadviewWillAppear 中尝试您的代码!

不要在创建 UISearchBar 后立即查找 UITextField(在 UISearchBar 已经创建后查找出现在屏幕上)

关于ios - iOS 7.1 中 UISearchBar 的 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22499379/

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