ios - 在开始编辑时选择 UISearchBar 中的所有文本?

标签 ios objective-c cocoa-touch uitextfield uisearchbar

我正在尝试模拟 iOS Safari 中地址栏的行为 - 也就是说,如果点击地址栏中有文本,则会选择该文本。大多数桌面浏览器的工作方式也大致相同。我不想在选择时清除它,只需选择里面的内容,这样如果用户开始输入,它就会清除,但用户也可以根据需要编辑现有字符串。

我尝试了以下方法,它在 iOS7 和 iOS6 下的 subview 中找到了 UISearchBarTextField ,但是在其上调用 selectAll 似乎没有任何效果。我尝试过更改其 text 属性,效果很好,只是 selectAll 不太满意。

我还尝试将 selectAll: 的参数更改为 self 以及其他一些内容,没有更改,只是不想选择其中的文本!

有什么想法吗?这是我的代码:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    NSArray *subviews = [UIDevice isRunningiOS7OrAbove]
    ? [[searchBar.subviews objectAtIndex:0] subviews]
    : searchBar.subviews;

    for (UIView *subview in subviews) {
        if ([subview conformsToProtocol:@protocol(UITextInputTraits)]) {
            UITextField *textField = (UITextField *)subview;
            [textField selectAll:textField];
        }
    }
}

编辑

我也尝试过这个,但没有什么乐趣:

for (UIView *subview in subviews) {
    if ([subview conformsToProtocol:@protocol(UITextInputTraits)]) {
        UITextField *textField = (UITextField *)subview;
        [textField setSelectedTextRange:[textField textRangeFromPosition:[textField beginningOfDocument]
                                                              toPosition:[textField endOfDocument]]];
    }
}

最佳答案

您可以使用:[UITextField setSelectedTextRange:(UITextRange *)]

- (void)textFieldDidBeginEditing:(UITextField*)textField {

 UITextPosition *start = [textField beginningOfDocument];

 UITextPosition *end   = [textField endOfDocument];

 UITextRange *range = [textField textRangeFromPosition:start toPosition:end];

 [textField setSelectedTextRange:range];

 }

现在您可以使用UISearchBar来实现...

关于ios - 在开始编辑时选择 UISearchBar 中的所有文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21281439/

相关文章:

ios - 动画 block 中 UIView 的旋转和设置中心有时不起作用

ios - UIView包含标签iOS如何改变标签的颜色

iphone - 查看iPhone设备内的应用程序文件夹

iphone - 调用 super ?

c# - Java <-> Java/C#/Objective-C 之间的通信

ios - 从 iOS 相机捕获视频

objective-c - 从图像获取“时间戳”

ios - 具有 IOS 客户端兼容性的 Websocket 服务器

ios - 以编程方式将按钮放置在图像上

iphone - 如何在矩阵中制作11个按钮