2015-01-15 5 views
0

코드로 추가 된 UITextField가 있고 키보드를 열면 텍스트 필드가 숨겨집니다. 사과 문서가 제안하는 것처럼 나는 많은 것을 검색하고 같은 결과를 얻었고 그녀는 나의 코드입니다. 그러나 여전히 작동하지 않습니다!키보드가 신속하게 UITextField를 숨기기

import Foundation 
import UIKit 

class testkey: UIViewController, UITextFieldDelegate { 

    var txt1: UITextField! = nil 
    var scrollView: UIScrollView! = nil 

    var activeTextField: UITextField! 

    override func viewDidLoad() { 

     txt1 = UITextField(frame: CGRect(x: 0, y:250, width: 223, height: 30)) 
     txt1.text = "text" 
     txt1.borderStyle = UITextBorderStyle.RoundedRect 
     txt1.delegate = self 

     scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: 225.00, height: 290)); 
     scrollView.addSubview(txt1) 

     self.view.addSubview(scrollView) 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    // Call this method somewhere in your view controller setup code. 
    func registerForKeyboardNotifications() { 
     let notificationCenter = NSNotificationCenter.defaultCenter() 
     notificationCenter.addObserver(self, 
      selector: "keyboardWillBeShown:", 
      name: UIKeyboardWillShowNotification, 
      object: nil) 
     notificationCenter.addObserver(self, 
      selector: "keyboardWillBeHidden:", 
      name: UIKeyboardWillHideNotification, 
      object: nil) 
    } 

    // Called when the UIKeyboardDidShowNotification is sent. 
    func keyboardWillBeShown(sender: NSNotification) { 
     let info: NSDictionary = sender.userInfo! 
     let value: NSValue = info.valueForKey(UIKeyboardFrameBeginUserInfoKey) as NSValue 
     let keyboardSize: CGSize = value.CGRectValue().size 
     let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0) 
     scrollView.contentInset = contentInsets 
     scrollView.scrollIndicatorInsets = contentInsets 

     // If active text field is hidden by keyboard, scroll it so it's visible 
     // Your app might not need or want this behavior. 
     var aRect: CGRect = self.view.frame 
     aRect.size.height -= keyboardSize.height 
     let activeTextFieldRect: CGRect? = activeTextField?.frame 
     let activeTextFieldOrigin: CGPoint? = activeTextFieldRect?.origin 
     if (!CGRectContainsPoint(aRect, activeTextFieldOrigin!)) { 
      scrollView.scrollRectToVisible(activeTextFieldRect!, animated:true) 
     } 
    } 


    // Called when the UIKeyboardWillHideNotification is sent 
    func keyboardWillBeHidden(sender: NSNotification) { 
     let contentInsets: UIEdgeInsets = UIEdgeInsetsZero 
     scrollView.contentInset = contentInsets 
     scrollView.scrollIndicatorInsets = contentInsets 
    } 

    func textFieldDidBeginEditing(textField: UITextField!) { 
     activeTextField = textField 
     scrollView.scrollEnabled = true 
    } 

    func textFieldDidEndEditing(textField: UITextField!) { 
     activeTextField = nil 
     scrollView.scrollEnabled = false 
    } 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     self.registerForKeyboardNotifications() 
    } 

    override func viewDidDisappear(animated: Bool) { 
     super.viewWillDisappear(animated) 
     NSNotificationCenter.defaultCenter().removeObserver(self) 
    } 

    func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore. 
    { 
     textField.resignFirstResponder() 
     return true; 
    } 

} 

답변

1

의 문서를 확인하시기 바랍니다 나는 다음과 같은 스크롤보기를 변경해야 누락 된 부분, 을 발견

scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)); 
     scrollView.contentSize = self.view.frame.size; 
관련 문제