2012-07-03 23 views
9

Gruplandırılmış statik UITableView ile bir UITableViewController sahibim. Film şeridindeki statik tablo görünümü için hücreleri tanımlıyorum. Hücrelerden birinde bir metin alanı var. Bu metin alanı çağrıldığında, klavye açılır, ancak tablo görünümü, normalde bir tablo görünümü denetleyicisinde olduğu gibi otomatik olarak yeniden boyutlandırılmaz. Yani şimdi klavye kısmen metin alanını kaplıyor ve yukarı çıkamıyorum.UITableViewController ve UITextField klavye

Anlayışım, bir UITableViewController ve bir masa görünümü kullanırken, klavye çağrıldığında görüntülenebilir alan otomatik olarak küçültülmelidir. Uygulamamın diğer bölümlerinde tasarlandığı gibi çalışır, sadece bu statik tablo görünümünde değil. Statik tablolarla çalışmaz mı? Kaybettiğim başka bir şey var mı? Bunu çözmenin kolay bir yolu var mı? Tablo formlarının bir düzenleme için seçilmiş (klavye bildirim uygulanmasını gerektirir) ise

sayesinde

+0

For You görünümü yukarı taşımak veya manuel olarak yeniden boyutlandırmak ya. – Dustin

+1

Soru, normalde normalde bunu otomatik olarak yapmıyor nedenidir? – Keith

+0

Muhtemelen statik tablo görünümü kullandığınızdan (tahmin ettiğiniz gibi). Statik tablo görünümleri özellikle değişmeyecek şekilde tasarlanmıştır - bu yüzden "statik" olarak adlandırılırlar. – Dustin

cevap

48

Cevap

Statik hücrelerle ilgisi yoktur. Çalışmalılar.

Denetleyiciniz zaten bir UITableViewController ise, viewWillAppear yöntemini kullanıp kullanmadığınızı kontrol edin. Eğer yaptıysanız, çalışmak için 'otomatik davranışı' almak için [super viewWillAppear:YES]'u aramanız gerekir. denetleyicileri için Demirbaş kodu viewWillAppear yöntem çağrısı ile gelmediği ve size denetleyicisi bunu tanımlarsanız, bunu geçersiz çünkü

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:YES]; // This line is needed for the 'auto slide up' 
    // Do other stuff 
} 

Bu sorun kolayca ortaya çıkar. Bu bağlantıyı

Ekstra Bilgi

bak.

Apple Table View Programming Guide

Not: UITableViewController iOS 3.0 yeni yeteneklere sahiptir. Bir tablo denetleyicisi, tablo görünümü satırlarının satır içi düzenlemesini destekler; , örneğin, satırlar düzenleme modunda metin alanları gömülü varsa, o kaydırır satır görüntülenir sanal klavyeye .... vesaire ....

önemli bit yukarıda Düzenlenen

UITableViewController sınıfı UIViewController miras basan loadView, viewWillAppear :, ve diğer yöntemler ile yukarıdaki davranış uygular. UITableViewController alt sınıfınızda, özel davranışlar elde etmek için da bu yöntemleri geçersiz kılabilirsiniz. yaparsanız, bu yöntemleri geçersiz kılın, varsayılan davranış almak için genellikle ilk yöntem çağrısı olarak yöntemin süper sınıfı uygulanmasını çağırdığınızdan emin olun.

+0

Burada yayınladığımdan sonra, statik tablo ile ilgisi olmadığını öğrendim. Test statik bir tablo oluşturdum ve iyi çalıştı, bu yüzden kodumda bir şey olduğunu biliyordum. % 100 haklıydın. [Süper viewWillAppear: YES] idi. Bunu benim görüşüme eklediğimde, işe yaradı. Sanırım nasıl silindi. Bu hafta düzeltme yapmaktan korkuyordum ve gerçekten kolay olduğu ortaya çıktı. Teşekkürler – Keith

+1

Şerefe adam. Sorunuz beni doktora işaret etti ve başka bir bilgi aldım: –

+1

Harika cevap, daha fazla oy vermediğiniz skandal. Yine de bir tane var. –

0

- (void) keyboardDidShow:(NSNotification *)aNotification 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.25]; 
    self.view.center = CGPointMake(self.view.center.x, self.view.center.y-moveAmount); 
    [UIView commitAnimations]; 
    isRaised = [NSNumber numberWithBool:YES]; 
} 

tablo (2 yükseklik böler) boyutlandırır görünümü kadar iter. Bunu klavye gösterme yöntemine takın. Ayrıca, bu şeyleri geri almak için klavye gizleme yöntemini kullanabilirsiniz.

CGRect temp = CGRectMake(mineTable.frame.origin.x, mineTable.frame.origin.y, mineTable.frame.size.width, mineTable.frame.size.height/2); 
mineTable.frame = temp; 
+1

Bu tam cevap mı? Bazı şeyler eksik gibi görünüyor. – Keith

+0

Size kod yazmayı bildiğiniz bir sürü şey göstermek istemedim. Size ne yapacağınızı söyledim (klavye bildirimlerini uygulayın). Sizi doğru yönde göstermek için sadece bir örnek kod. – Dustin

1

Swift

override func viewWillAppear(animated: Bool) { 

    super.viewWillAppear(animated) 

} 
İlgili konular