簡體   English   中英

selectedTextRange在UISearchbar iOS中返回nil

[英]selectedTextRange return nil in UISearchbar iOS

我有一個UISearchBar ,我得到了UITextfield ,然后我要設置選定的Text范圍,但是它總是返回nil。 這是我的代碼:

UITextField *searchField = [self.searchBar valueForKey:@"_searchField"];
[searchField becomeFirstResponder]; // focus to this searchfield

然后我填寫文本:

self.searchBar.text = @"This is text";

並檢查是否填充了UITextField文本。 盡管如此,所有有關UITextPositionUITextRange的方法UITextRange返回nil:

UITextRange *selectedRange = [searchField selectedTextRange]; //selectedRange = nil
UITextPosition *newPosition = [searchField positionFromPosition:selectedRange.start offset:addressToComplete.street.length]; //newPosition = nil
UITextRange *newRange = [searchField textRangeFromPosition:newPosition toPosition:newPosition]; //newRange = nil

我的代碼有錯嗎?

您是否嘗試過記錄UITextField *searchField 從外觀上看它是零。我認為您的代碼應該是..

(UITextField *)[self.searchBar valueForKey:@"_searchField"]

([嘗試您的代碼后] OooOoKayyy ..它起作用..哈哈哈..)順便說一下,這就是我在searchBar中獲取UITextField的方式。

for (id object in [[[self.searchBar subviews] objectAtIndex:0] subviews])
{
    if ([object isKindOfClass:[UITextField class]])
    {
        UITextField *searchField = (UITextField *)object;
        break;
    }
}

首先,我嘗試了您所擁有的:

UITextField *searchField = (UITextField *)[searchBar valueForKey:@"_searchField"];
searchBar.text = @"This is text";
// and logging your searchField.text here.. returns nil/empty.. 

我試圖像這樣重新排列它...

 searchBar.text = @"This is text";
 UITextField *searchField = (UITextField *)[searchBar valueForKey:@"_searchField"];
 NSLog(@"searchFields.text :%@", searchField.text);

我再次在-(void)viewDidLoad下嘗試了您的代碼,但是不好,是的,它總是為nil,正如您所說的..現在看起來像這樣。

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    searchBar.text = @"This is text"; // not important

    UITextField *searchField = [searchBar valueForKey:@"_searchField"];
    [searchField becomeFirstResponder];

     UITextRange *selectedRange = [searchField selectedTextRange]; //selectedRange = not nil anymore

     NSLog(@"searchField.text :%@ -> selectedRange :%@\n\n" , searchField.text, selectedRange);
}
//i've also tried it inside uibutton's event and i worked .. >.< 

我以編程方式選擇了TextRange(出於示例目的),可能與xibs自動布局有關(或奇怪(我沒有經驗)),但是確實有,請嘗試.. :)

我希望我能幫助您。

祝您編程愉快!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM