2013-11-19 2 views
1

Я новичок в ios. У меня есть следующий код для изменения типа ключа возврата для подключения. Он отлично работает в ios6, но не в ios7. Код внутри if-блока никогда не выполняется на ios7.UITextInputTraits не работает в ios7

Кто-нибудь видел подобную проблему? Есть ли обходной путь для этого?

if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) { 
    [searchBar resignFirstResponder]; 
    [(UITextField *)searchBarSubview setReturnKeyType:UIReturnKeyJoin]; 
    [searchBar becomeFirstResponder]; 
} 

Я гугл и нашел, что присоединиться кнопка не отображается, так как внутренняя структура UISearchBar, которые не должны изменять, не изменилась. Я не знаю, как это исправить и где узнать, что изменилось, кто-нибудь может объяснить?

Также попробовал следующее (аналогично) обходной код не достаточно повезло

for(UIView *searchBarSubview in [searchBar subviews]) { 
if([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) { 
    [(UITextField *)searchBarSubview setReturnKeyType: UIReturnKeyJoin]; 
} else { 
    for(UIView *subSubView in [searchBarSubview subviews]) { 
     if([subSubView conformsToProtocol:@protocol(UITextInputTraits)]) { 
      [(UITextField *)subSubView setReturnKeyType: UIReturnKeyJoin]; 
    } 
}  
} 
+0

https://github.com/EthanArbuckle/IOS-7-Headers /blob/master/PrivateFrameworks/UIAccessibility.framework/UITextInputTraits-Protocol.h проверить это – Sport

ответ

1

Попробуйте это:

UITextField *searchBarTextField ; 
    NSArray *views = ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0f) ?  
    self.searchBar.subviews : [[self.searchBar.subviews 
    objectAtIndex:0] subviews]; 
    for (UIView *subview in views) 
    { 
    if ([subview isKindOfClass:[UITextField class]]) 
    { 
     searchBarTextField = (UITextField *)subview; 
     break; 
    } 
    } 
    searchBarTextField.returnKeyType = UIReturnKeyJoin; 
+0

Не работает для меня в iOS 7.0.3. Текстовое поле поиска - это UISearchBarTextField, а isKindOfClass вернет false – momo

0
try this for get textfield from searchbar 
for (UIView *subView in self.searchBar.subviews){ 
     for (UIView *searchView in subView.subviews){ 
      if ([searchView isKindOfClass:[UITextField class]]) 
       { 

       [(UITextField *)searchView setKeyboardAppearance:UIKeyboardAppearanceAlert]; 
       [(UITextField *)searchView setEnablesReturnKeyAutomatically:NO]; 
       break; 
       } 
     } 
    } 
Смежные вопросы