【发布时间】:2014-02-12 10:09:07
【问题描述】:
我正在尝试模拟 iOS Safari 中地址栏的行为——也就是说,如果点击地址栏中的文本时,它会被选中。大多数桌面浏览器的工作方式也大致相同。我不想在选择时清除它,只需选择里面的内容,这样如果用户开始输入,它就会被清除,但用户也可以根据需要编辑现有字符串。
我尝试了以下,它在iOS7和iOS6下的子视图中都找到了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]]];
}
}
【问题讨论】:
标签: ios objective-c cocoa-touch uitextfield uisearchbar