Aşağıda gördüğünüz gibi bir UISearchBar'ım var. İptal düğmesinin metin rengini nasıl değiştirebilirim?UISearchbar iptal düğmesinin metin rengini nasıl değiştiririm?
cevap
Bu soru bir süre önce sorulmuştur, bu yüzden sormuş olan kişinin zaten bir çözüm bulduğunu varsayalım. Ama sadece bazılarının aynı soruna çarpması durumunda. İşte benim çözümüm.
Yalnızca UISearchBar'ın metin alanına dokunulduğunda görünen bir iptal düğmesiyle bir UISearchBar'ım var. Bu nedenle, UISearchBar'ın bir alt sınıfında geçersiz (- geçersiz) layoutSubviews çözümü benim için bir seçenek değildi. Neyse, iptal düğmesinin yazı tipini ve textColorunu ayarlamak için genel bir yöntemle UISearchBar (CustomSearchBar) alt sınıfını yaptım. UISearchBar'ı oluşturduğumda, arama çubuğunun metin alanı temsilcisinin kendiliğinden ayarlandığından ve arama çubuğunu oluşturan sınıfın UITextFieldDelegate protokolünü uyguladığından emin olurum. Kullanıcı arama çubuğunun metin alanına dokunduğunda, delege bilgilendirilir ve CustomSearchBar yöntemini çağırır. Bunu burada yapmamın nedeni, iptal düğmesinin göründüğü an olduğu ve bu nedenle görüntü hiyerarşisinde olduğunu ve onun özelleştirmesini yapabileceğinin bilinmesi.
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self.searchBar setCloseButtonFont:[UIFont fontWithName:@"American Typewriter" size:14] textColor:[UIColor grayColor]];
}
(o UITextFieldDelegate protokolünü uygulayan olduğundan emin olun)
MyRootViewController içinde MyRootViewController içinde
CustomSearchBar *searchBar = [[CustomSearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 40)];
[searchBar setBarStyle:UIBarStyleDefault];
[searchBar setTintColor:[UIColor whiteColor]];
for (UIView *view in [searchBar subviews])
{
if ([view isKindOfClass:[UITextField class]])
{
UITextField *searchTextField = (UITextField *)view;
[searchTextField setDelegate:self];
}
}
self.searchBar = searchBar;
[searchBar release];
UITextFieldDelegate UISearchBar oluşturmak için Ve bu herkese açıktır: Burada
kod UISearchBar'ın alt sınıfı yönteminde Bunun yerine tüm bu fantezi şeyler yapmanın- (void)setCloseButtonFont:(UIFont *)font textColor:(UIColor *)textColor
{
UIButton *cancelButton = nil;
for(UIView *subView in self.subviews)
{
if([subView isKindOfClass:[UIButton class]])
{
cancelButton = (UIButton*)subView;
}
}
if (cancelButton)
{
/* For some strange reason, this code changes the font but not the text color. I assume some other internal customizations make this not possible:
UILabel *titleLabel = [cancelButton titleLabel];
[titleLabel setFont:font];
[titleLabel setTextColor:[UIColor redColor]];*/
// Therefore I had to create view with a label on top:
UIView *overlay = [[UIView alloc] initWithFrame:CGRectMake(2, 2, kCancelButtonWidth, kCancelButtonLabelHeight)];
[overlay setBackgroundColor:[UIColor whiteColor]];
[overlay setUserInteractionEnabled:NO]; // This is important for the cancel button to work
[cancelButton addSubview:overlay];
UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 2, kCancelButtonWidth, kCancelButtonLabelHeight)];
[newLabel setFont:font];
[newLabel setTextColor:textColor];
// Text "Cancel" should be localized for other languages
[newLabel setText:@"Cancel"];
[newLabel setTextAlignment:UITextAlignmentCenter];
// This is important for the cancel button to work
[newLabel setUserInteractionEnabled:NO];
[overlay addSubview:newLabel];
[newLabel release];
[overlay release];
}
}
Sen UISearchBar alt sınıfı ve kendi - (void)layoutSubviews
yöntemi yazabilir. Bu yöntemde, alt görünümleri ile döngü ve cancelButton olsun. Gerisi düz ileri olmalı.
teşekkürler. Ancak, layoutSubView yöntemini nasıl yeniden yazabileceğimi bilmiyorum.Bu konuda bana yardımcı olabilir misiniz? – Zhen
Geçersiz kılma - (geçersiz) layoutSubviews yalnızca UISearchBar özelliğininCancelButton öğesi EVET olarak ayarlanmışsa çalışır. Varsayılan olarak bu, NO olarak ayarlanır ve bu nedenle, iptal düğmesi yalnızca UISearchBar'ın metin alanı vurulduğunda görünür. Bu durumda, layoutSubviews'ın geçersiz kılınmasının bir etkisi olmaz. – strave
sadece Gyanerdra cevabı iyi çalışıyor bu
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
// only show the status bar’s cancel button while in edit mode sbar (UISearchBar)
searchBar.showsCancelButton = YES;
searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
UIColor *desiredColor = [UIColor colorWithRed:212.0/255.0 green:237.0/255.0 blue:187.0/255.0 alpha:1.0];
for (UIView *subView in searchBar.subviews){
if([subView isKindOfClass:[UIButton class]]){
NSLog(@"this is button type");
[(UIButton *)subView setTintColor:desiredColor];
[(UIButton *)subView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
}
Bu bir çekicilik gibi çalıştı! – Giovanni
gibi SearchBarTextDidBeginEditing uygulamak. Ancak iOS7 için uygulamasında çalışması için aşağıdaki değişikliği yapmam gerekiyor.
Görünüşe göre iOS7 için arama çubuğu bir üst görünümde bulunmaktadır. Umut, bu birisine yardımcı olur. b
Bunu gerçekleştirmek için iOS Çalışma Zamanı Özelliği _cancelButton
'dan yararlanabilirsiniz.
UIButton *cancelButton = [searchBar valueForKey:@"_cancelButton"];
[cancelButton setTitleColor:[UIColor yourColor] forState:UIControlStateNormal];
Unable to change UISearchBar cancel button title color after changing it's text.
AlmaButton = nil, arama için etkinleştirilmemiş olana kadar searchBar.showsCancelButton = YES – kb920
KVC
UIButton * düğmesi = [_searchBar valueForKey: @ "_ CancelButton"]; button.titleLabel.font = [UIFont systemFontOfSize: 13]; Cevabı için
- 1. UISearchBar İptal Düğmesi Çalışmıyor
- 2. UISearchBar iptal düğmesi yanıt vermiyor
- 3. IE'de giriş alanındaki metin imlecinin rengini nasıl değiştiririm?
- 4. UISearchBar metin alanının arka plan rengi ve metin rengini ios8 olarak değiştirme
- 5. Jade'de bir sayfanın arka plan rengini nasıl değiştiririm?
- 6. Notepad ++ metin rengini değiştir?
- 7. Genel metin rengini ayarla?
- 8. UISearchBar kapsam çubuğu nasıl görünür?
- 9. UISearchBar
- 10. UISearchBar
- 11. UISearchBar
- 12. ASP.NET grafik denetiminin arka plan rengini nasıl değiştiririm?
- 13. Tutulma sırasında koşullu makronun arkaplan rengini nasıl değiştiririm?
- 14. Metnimin rengini iOS 7'deki UINavigationBar'ımda nasıl değiştiririm?
- 15. Dizin listelemelerinin rengini, oh-my-fish ile nasıl değiştiririm?
- 16. TabLayout kullanırken bir sekme arka plan rengini nasıl değiştiririm?
- 17. Winforms'ta sekme denetiminin arka plan rengini nasıl değiştiririm?
- 18. Arka plan rengini farklı renklerdeki tam metinli olarak nasıl değiştiririm?
- 19. Google script editöründe arka plan rengini nasıl değiştiririm
- 20. Bir UIToolbar içindeki UISearchBar iptal et göster düğmesi
- 21. UISearchBar, sonuç tablosuna dokunulduğunda temizlenir
- 22. Grup kutusu metin rengini değiştir?
- 23. NSTextView'da metin seçim rengini değiştirme
- 24. MonoTouch'da UISearchBar nasıl uygulanır
- 25. nasıl farklı fragmanlar metin rengini değiştirmek için
- 26. Android'de görüntü düğmesinin altına metin ekleme
- 27. QML düğmesi metin rengini değiştir
- 28. SELECT kutularındaki metin rengini değiştirme
- 29. textinputlayout'un ipucu metin rengini değiştirme
- 30. Önyükleme mod penceresi penceresindeki kapatma düğmesinin rengini değiştirin
Bu harika. Bunun için çok teşekkürler. Ben çok memnun olmayan alternatif bir yöntem kullandım. Ama bununla birlikte şimdi sorunu tekrar ziyaret edebilirim. Teşekkürler! – Zhen
Size yardımcı olduğuna sevindim. – strave