2011-04-02 9 views
5

En garip ekran hatasıyla karşılaştığımda UISearchBar.
İşte başka bir uygulamada mükemmel çalışan kodum. (A xib dosyası mümkün değildir çünkü kodunda arama çubuğunu oluşturun.)UISearchBar ekran hatası: metin çok uzak kaldı, büyüteç simgesinin üst üste gelmesi

searchBar = [[UISearchBar alloc] initWithFrame: 
    CGRectMake(0, 0, self.tableView.frame.size.width, 44)]; 
searchBar.delegate = self; 
searchController = [[UISearchDisplayController alloc] 
        initWithSearchBar:searchBar contentsController:self]; 
searchController.delegate = self; 
searchController.searchResultsDataSource = self; 
searchController.searchResultsDelegate = self; 
self.tableView.tableHeaderView = searchBar; 

arama işlevselliği vb çalışıyor. Ama garip, arama çubuğu cihazı ve simülatörde hem şuna benzer:

UISearchBar with display bug

  • tutucu dize daha fazla sağda olması, ancak olmamalıdır.
  • Arama metnini girdiğimde, büyüteç simgesinin gösterilmesiyle çok fazla sola başlar. Ayrıca, veya searchBar.prompt veya searchBar.prompt veya veya nil ayarlarının yapılması, bu "Ara" yer tutucusunu kaldırmaz. (Ancak, bir
    searchBar.placeholder = @"FooBar";
    , ama yine de yanlış konumda "filanca" gösterecektir.
  • Son olarak, garip ben başka bir şeye dilini ayarlamak rağmen dize "Ara" olduğunu fark (diyelim ki,) Alman.

Herhangi bir yardım? en zorlu sorun sağın üstüne metni elde etmektir.

+0

Sadece sağdaki dizin başlıklarının (görüntüdeki "A" ve arama sembolünü görebilirsiniz) otomatik olarak arama kutusunun sağ kenarını sola kaydırdığını fark ettim. Belki de yer tutucu/arama dizgisini aynı mesafeye kaydırır (olmamasına rağmen). – Mundi

+0

Dizin başlıklarının kaldırılması, düzeltme yapılmadı. – Mundi

+0

Uygulamamda da aynı sorun vardı. Önceki versiyonumda iyiydi. Ancak, kısa bir süre önce oldu. Hala çözüm arıyorum. BTW, benim aramaBar XIB içinde tanımlanmıştır. – RoIT

cevap

19

Söz konusu davranışın (CGRect)editingRectForBounds:(CGRect)bounds veya - (CGRect)textRectForBounds:(CGRect)bounds ya geçersiz kılarak kaynaklanabilir. bir bulunanların ya değişmiş mü Uygulamanızda başka bir yerde UITextField kategorisi var mı? Bunu yapmanın amacı, bir metin alanına dolgu eklemek olabilir (bunun yerine bir görünmez leftView ile gerçekleştirilebilir). Bu durumda, özel "dolgu" ifadeniz UISearchBar metin alanına uygulanır. UITextField üzerinde

Böyle bir kategori ayrıca MFMailComposeViewController olarak UITextField kullanmak çerçeve sınıfları, başlatılırken uygulama çökmesine neden olur, bu nedenle çeşitli nedenlerden dolayı kötü bir fikirdir.

+0

Bunu kaldırırsam tüm proje etkilenir. Belirli bir sınıf için "textRectForBounds" değerini "0" olarak ayarlamam mümkün mü? veya başka bir çözüm. –

İlgili konular