Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
1.6k kez görüntülendi
ios developer portal kategorisinde tarafından

Merhabalar herkese,

uygulamamda scroll view kullanıyorum auto-layout'u hazırladım ancak içerik icin gelen text satır başından değilde textin 3/4'ü gibi bi oranla sondan satır başı yapıyor. Scroll bar text view'ın başından değilde son kısımlara doğru başlıyor.

enter image description here

https://drive.google.com/file/d/0B-mxXNuEWybRMkE5SkwyVVphS2c/view?usp=sharing

text view böyle geliyor.

enter image description here

https://drive.google.com/file/d/0B-mxXNuEWybRQVJFdmdhRTJDdzQ/view

ama olması gereken bu.

1 cevap

0 oy
tarafından

navigationBar filan var mı üstte?

tarafından

ekranda navigation bar var ama textview'ın hemen üzerinde label'lar ve herbir label'ın arkasında imageview var.

ekran görüntüsü

enter image description here

tarafından

hımm, yani problem doğru anladıysam scrollBar'ın aşağıya kaydırılmış bir şekilde görüntülenmesi herhalde, değil mi?
yukarı doğru scroll ettiğinde içerik tam bir şekilde görüntüleniyor mu?
eğer problem buysa, scrollView'in contentoffset y değerini 0 yap.

tarafından

evet hocam "yıllık saklama dahildir......" satırı asında gelen text'in 4/3'ündeki bi satır ekteki screenshoot da scroll pozisyonunu işaretledim text view bu sekilde geliyor text satır başından değil de böyle acaip bi noktadan başlıyor.

ekran görüntüsü

tarafından

tamam o zaman scrollView contentoffset y değerini 0 yapmana rağmen aynı sonucu alıyorsan.
Muhtemelen scrollView içeriğindeki textView'in scrollView contentSize'ının dikey alanının dışında çıkıyor.
scrollView içerisinde textView'dışında daha başka birşeyler var mı?
eğer varsa, içerik oluşturulduktan sonra tüm dikey ölçülerini toplayıp scrollView contentSize ve gerekirse contentoffset'ini de doğru bir şekilde set etmen lazım.
takdir edersin ki, kod görmeden sadece ekran görüntüsüyle problemin tam olarak ne olduğunu nokta atışı anlayamıyorum, çok daha farklı bir şey de olabilir belki.
Ama öncelikle bu dediklerimi bir kontrol et.

tarafından

scroll derken sizi yanıltmışım hocam. scroll'dan kastım textview'ın kendi scroll'u burada herhangi bir extra scroll view nesnesi yok, bu ekranın kod kısmında pek bir numara yok bir önceki sayfada table view'da listelenen herbir datanın detay ekranı. kod kısmında bi önceki ekrandan didselectrowat fonksiyonu ile data ekranımızdaki stringlere gönderiliyor bu datalarda label ve textview'da gösteriliyor.

tarafından

haa. ok.
peki şunu sorayım, bu detay ekranına gelen string verilerini hangi ovveride metodunun içerisinde set ediyorsun bu label ve textView'lerin içerisine. viewDidLoad'da mı yoksa viewDidappear ya da viewWillAppear içerisinde mi?

kendin scroll ettiğinde üst tarafta kalan satırlara ulaşabiliyorsun değil mi?

tarafından

stringlerdeki dataları label'lar ve textview'a viewDidLoad da set ediyorum. evet kendim scroll ettiğimde textview ve text'in başlangıcına ulaşabiliyorum.

tarafından

viewDidAppear içerisinde bir denermisin o halde

tarafından

viewDidAppear'ı ve viewWillAppear'ı denemiştim hocam sonuç aynı, ancak şimdi simülatör'ü animated slow yaparak fark ettim ki viewDidAppear fonsiyonunda textview gelen text'in sonuna gidiyor. satır başından değilde satır sonundan göstermeye başlıyor galiba.

örneğin text; "Thomas Alva Edison (d. 11 Şubat 1847 – ö. 18 Ekim 1931) 20. yüzyıl yaşamını icatlarıyla büyük bir şekilde etkileyen Amerikalı mucit ve iş adamıdır. Bazı icatları tamamen orijinal olmakla birlikte, eski icatların geliştirilmesi veya yönetimi altında çalışan yüzlerce çalışana aittir. Yine de Edison elinde bulundurduğu kendi adını taşıyan[1] Amerikan patentiyle tarihteki en önemli ve en verimli mucitlerden biri olarak nitelendirilir. Patentlerinin çoğu Amerika'nın haricinde Almanya, Fransa ve İngiltere onaylarına da sahiptir. "

ise "Thomas Alva Edison (d. 11 Şubat 1847 – ö. 18 Ekim 193...." kısmından başlayarak göstermesi gerekirken;

".......de Almanya, Fransa ve İngiltere onaylarına da sahiptir. " den başlıyor.

tarafından

viewDidAppear'i içerisinde super.viewDidAppear'dan sonra ekliyorsun değil mi set ettiğin kodları?

şu şekilde yani;

override func viewDidAppear(_ animated: Bool) {
                super.viewDidAppear(animated)

                //buraya

}
tarafından

evet hocam aynen bu şekilde;

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    lblOffCustomerName.text = offNameStr
    lblOffStatus.text = offStatusStr
    lblOffType.text = offTypeStr
    lblOffDate.text = offDateStr
    lblOffPrice.text = offPriceStr
    txtOffProcuct.text = offProductStr
}
tarafından

tamam
şimdi simule ettim problemi.
başta da sorduğum gibi, eğer viewController'in bir navigationBar'ı mevcutsa,
içerisine eklediğin tüm scrollable contentlerin offsetleri navigation bar nispetinde aşağıya kaydırılırlar.
bu nedenle deatilViewController viewDidLoad metodu içerisine şunu ekle.

self.automaticallyAdjustsScrollViewInsets = false

tarafından

denedim hocam maalesef problem devam ediyor.

tarafından

enteresan.
setContentOffset'in nasıl olup da hiç bir şekilde etkilemediğini hala anlamadım.

son olarak şöyle bir dener misin.

override func viewWillLayoutSubviews() {
    print("viewWillLayoutSubviews")
    self.textView.setContentOffset(.zero, animated: false)
}
tarafından
tarafından düzenlendi

bu da başarılı değil hocam maalesef. bende anlamlı hiçbir yanıt bulamadım hiçbir yerde textview'ı main.story bord tarafında da kurcaladım ama olmadı. auto layout'u baştan kontrol edip deneyeceğim başka mantıklı bir neden bulamadım bende.

...