0

このエラーが発生し続けます:

サイズのあいまいな使用

私はいたるところを見て、いくつかのトリックを試しましたが、うまくいかず、理由もわかりません。

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 を使用しています。関数を変更しようとしましたが、さらに多くのエラーが発生しました。

4

1 に答える 1

0

objectForKey の戻り値をキャストする必要があります。objectForKey は型「Any」を返し、CGRect クラスのメソッドが必要です。

let size = (info.objectForKey(UIKeyboardFrameBeginUserInfoKey) as! CGRect)?.size
于 2016-10-21T15:46:26.613 に答える