Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
307 kez görüntülendi
ios development kategorisinde tarafından
tarafından düzenlendi
Merhaba,

Dünden beri sayısız kod örneği denememe rağmen tam olarak istediğimi yapamadım. view içerisinde textfield ve textview kontollerimden oluşan bir formum var. Formun aşağısındaki kontrollere tıkladığımda textfied ve textview kontrollerim klavye altında kalıyor. Denediğim kodlarda hangi textfield yada view a tıklasam kontroller yukarı kayıyor yani ilk kontrole tıkladığımda klavye altında kalmayacak olan kontrol için bile klavye göründüğünde yukarı kayıyor görünmez oluyor.

 Scroll view içeren ve içermeyen iki view kontrolüm var ve ikisinde de çalışacak bir örneğe ihtiyacım var. Yardımcı olursanız sevinirim.

1 cevap

0 oy
tarafından
tarafından seçilmiş
 
En İyi Cevap

tam anlayamdım. klavye görüntülendiğinde kontrol dediğin textfield ve textview alnalarının yukarı kayması çözmüyor mu problemi? en azında bi ekran görüntüsü filan paylaşırsan daha anlaşılır olur.

tarafından
tarafından düzenlendi
Evet çözüyor istediğim de bu zaten ama swift 3 için uygulamaya çalıştığım kodlar textfield e tıklandığında çalışıyor textview e tıklandığında çalışmıyor  ya da bir şekilde hataya düşüp klavye kapandığında siyah bir boşluk bırakıyor.

Son kullandığım kod bu, bu kod çalışıyor ancak textviewde işe yaramıyor

func textFieldDidBeginEditing(_ textField: UITextField) {
        let textFieldRect : CGRect = self.view.window!.convert(textField.bounds, from: textField)
        let viewRect : CGRect = self.view.window!.convert(self.view.bounds, from: self.view)
        
        let midline : CGFloat = textFieldRect.origin.y + 0.5 * textFieldRect.size.height
        let numerator : CGFloat = midline - viewRect.origin.y - MoveKeyboard.MINIMUM_SCROLL_FRACTION * viewRect.size.height
        let denominator : CGFloat = (MoveKeyboard.MAXIMUM_SCROLL_FRACTION - MoveKeyboard.MINIMUM_SCROLL_FRACTION) * viewRect.size.height
        var heightFraction : CGFloat = numerator / denominator
        
        if heightFraction == 1.0 {
            heightFraction = 1.0
        }
        
        let orientation : UIInterfaceOrientation = UIApplication.shared.statusBarOrientation
        if (orientation == UIInterfaceOrientation.portrait || orientation == UIInterfaceOrientation.portraitUpsideDown) {
            animateDistance = floor(MoveKeyboard.PORTRAIT_KEYBOARD_HEIGHT * heightFraction)
        } else {
            animateDistance = floor(MoveKeyboard.LANDSCAPE_KEYBOARD_HEIGHT * heightFraction)
        }
        
        var viewFrame : CGRect = self.view.frame
        viewFrame.origin.y -= animateDistance
        
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationBeginsFromCurrentState(true)
        UIView.setAnimationDuration(TimeInterval(MoveKeyboard.KEYBOARD_ANIMATION_DURATION))
        
        self.view.frame = viewFrame
        
        UIView.commitAnimations()
    }
    
    func textFieldDidEndEditing(_ textField: UITextField) {
        var viewFrame : CGRect = self.view.frame
        viewFrame.origin.y += animateDistance
        
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationBeginsFromCurrentState(true)
        
        UIView.setAnimationDuration(TimeInterval(MoveKeyboard.KEYBOARD_ANIMATION_DURATION))
        
        self.view.frame = viewFrame
        
        UIView.commitAnimations()
        
    }
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
tarafından
textView delegate metodları nerede?
textView'i delegate etmelisin.
tarafından
konuyla alakalı bir önek hazırladım.
şuradan indirip inceleyebilirsin.
https://drive.google.com/open?id=0B_33To7xgYO7R0dMZFhBTnVyTTg
tarafından

Çok teşekkür ederim.

...