我正在子类化UIScrollView
中添加一些功能,例如双击缩放和用于图库目的的image属性。但是为了做图像部分,我的子类必须是自己的委托并实现viewForZoomingInScrollView
。
但是,当有人使用我的滚动视图子类时,他们可能还希望获得委托通知,以查看scrollViewDidScroll
或了解您的情况。
在Swift中,我如何同时获得这两个?
这是此模式的Swift版本:
尽管forwardInvocation:
已在Swift中禁用,但我们仍然可以使用forwardingTargetForSelector:
class MyScrollView: UIScrollView {
class _DelegateProxy: NSObject, UIScrollViewDelegate {
weak var _userDelegate: UIScrollViewDelegate?
override func respondsToSelector(aSelector: Selector) -> Bool {
return super.respondsToSelector(aSelector) || _userDelegate?.respondsToSelector(aSelector) == true
}
override func forwardingTargetForSelector(aSelector: Selector) -> AnyObject? {
if _userDelegate?.respondsToSelector(aSelector) == true {
return _userDelegate
}
else {
return super.forwardingTargetForSelector(aSelector)
}
}
func viewForZoomingInScrollView(scrollView: MyScrollView) -> UIView? {
return scrollView.viewForZooming()
}
// Just a demo. You don't need this.
func scrollViewDidScroll(scrollView: MyScrollView) {
scrollView.didScroll()
_userDelegate?.scrollViewDidScroll?(scrollView)
}
}
private var _delegateProxy = _DelegateProxy()
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
super.delegate = _delegateProxy
}
override init(frame: CGRect) {
super.init(frame: frame)
super.delegate = _delegateProxy
}
override var delegate:UIScrollViewDelegate? {
get {
return _delegateProxy._userDelegate
}
set {
self._delegateProxy._userDelegate = newValue;
/* It seems, we don't need this anymore.
super.delegate = nil
super.delegate = _delegateProxy
*/
}
}
func viewForZooming() -> UIView? {
println("self viewForZooming")
return self.subviews.first as? UIView // whatever
}
func didScroll() {
println("self didScroll")
}
}
假设我们有一个垂直的(即flex-direction:column)flexbox容器,具有给定的宽度和高度。flexbox包含div,每个div包含一个图像。 所有DIV和图像都应该以相同的百分比收缩/增长,以填充flexbox的高度,这是通过使用flex-shrink和/或Flex-Grow实现的。 所有图像都应该保持其纵横比(即不拉伸),这是通过不设置其css“width”属性来实现的。 每
我试图在任意年份的经济衰退中计算复利。以下promise函数计算可变投资组合的发展。 编辑的清晰度: const是一个从1到20循环一年的数组(是静态的) 三元()在每次运行的不同年份触发,导致不同年份的
我正在尝试使用JPA注释设计我的实体类。 我正在努力做的是: 具有 ID、***电子邮件、密码、activation_key、active、role***的用户表 和许多类型的用户表。 student_table user_id第一名最后一名公司地址等 MENTOR user_id第一名最后一名DOB部门等 当用户注册时,根据他们的角色,他们将被分为两个表(用户、导师/学生) 当它们登录时,Man
问题内容: 有人可以解释何时以及何时不使用Swift中的委托指针进行“弱”分配,为什么? 我的理解是,如果您使用的协议未定义为类,则无法,也不想将您的委托指针分配给弱。 但是,当您的协议定义为类类型协议时,您是否要将委托设置为弱指针? 我对么?在Apple的快速指南中,类协议示例没有使用弱分配,但是在我的测试中,如果没有弱引用我的委托人,我会看到强参考周期。 问题答案: 通常,使类协议(如用关键字
问题内容: 如果我有一个内部类的实例,如何 从不在内部类中的代码 访问外部 类 ?我知道在内部类中,我可以用来获取外部类,但是我找不到任何外部方式来获取此类。 例如: 问题答案: 该类的字节码将包含一个名为type 的包作用域。这就是用Java实现非静态内部类的方式,因为在字节码级别上没有内部类的概念。 如果您确实愿意,您应该能够使用反射来读取该字段。我从来不需要这样做,因此最好更改设计以使其不再