首页 > 解决方案 > 如何快速获取通用类型项目的高度

问题描述

我有一个函数(在 UIViewController 扩展中)需要采用泛型类型(因为我可以传入一个按钮、一个 UITextField 等)。在该函数中,我需要找到通用类型(按钮、UITextField 等)的高度和宽度。我使用此信息能够根据键盘高度向上滚动页面以使按钮或任何可见的按钮。它的代码在下面。

extension UIViewController {
       func scrollUpKeyboard<Object>(object: Object, keyboardHeight: CGFloat, realOrigin: 
           CGPoint) {
       var buttonHeight = self.view.frame.size.height - (object.frame.size.height + 
           realOrigin.y)
        
        if keyboardHeight > buttonHeight {
            self.ScrollUpFromKeyboard(amount: keyboardHeight - buttonHeight)
        } else {
             self.ScrollUpFromKeyboard(amount: -10)
             
        }
   }
// More code
}

我得到的错误是“'对象'类型的值没有成员'框架'。” 如何获取通用对象的高度和宽度。

标签: iosswift

解决方案


这些不是通用对象。它们都是 UIView,它是一个超类。你可以通过它:

func scrollUpKeyboard(object: UIView, ...

推荐阅读