2016-10-21 21 views
0

私はこのエラーを取得しておいてください。ScrollView迅速なコンパイラエラー

Ambiguous use of 'size

は、私はどこにでも見て、いくつかのトリックを試してみましたが、それは動作しません、私は理由を知りません。

import UIKit 

class ScrollView: UIScrollView { 
    var textField: UITextField! 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 

     self.backgroundColor = UIColor(white: 1, alpha: 0) 

    } 

    func registerForKeyboardNotifications() { 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWasShown), name: UIKeyboardDidShowNotification, object: nil) 

     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillBeHidden), name: UIKeyboardDidShowNotification, object: nil) 
    } 

    func keyboardWasShown(notification: NSNotification) { 
     let info: NSDictionary = notification.userInfo! 
     //HERE=> let size = info.objectForKey(UIKeyboardFrameBeginUserInfoKey)?.size /* THIS IS THE LINE OF THE ERROR */ 
     let insets = UIEdgeInsetsMake(0.0, 0.0, size!.height, 0.0) 

     self.contentInset = insets 
     self.scrollIndicatorInsets = insets 

     var rect = self.frame 
     rect.size.height -= size!.height 

    } 

    func keyboardWillBeHidden(notification: NSNotification) { 
     let insets = UIEdgeInsetsZero 
     self.contentInset = insets 
     self.scrollIndicatorInsets = insets 
    } 

    func textFieldDidBeginEditing(textField: UITextField) { 
     self.textField = textField 
    } 

    func textFieldDidEndEditing(textField: UITextField) { 
     self.textField = nil 
    } 

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

    /** 
    * Called when the user click on the view (outside the UITextField). 
    */ 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     self.endEditing(true) 
    } 
} 

ここに私はエラーがあります。 Swift 2.3とXcode 8を使用しています。 私の機能を変更しようとしましたが、さらにエラーが発生しました。

+0

これはエラーの行である:サイズは= info.objectForKey(UIKeyboardFrameBeginUserInfoKey)?。サイズ –

答えて

0

objectForKeyの戻り値をキャストする必要があります。 objectForKeyは "Any"型を返し、CGRectクラスからメソッドを取得します。

let size = (info.objectForKey(UIKeyboardFrameBeginUserInfoKey) as! CGRect)?.size 
+0

Nopに、迅速なコンパイラエラーが、 –

+0

は非オプション値の型に連鎖するoptionnal使用することはできませんしましょう「CGRECT」 –

+0

マイ障害:) - 疑問符を削除するだけです。 – Dan