Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // UIRefreshControl+testing.swift
- // Kakhiel
- //
- // Created by Koen Punt on 08-02-16.
- // Copyright © 2016 Fetch!. All rights reserved.
- //
- import Foundation
- import UIKit
- /** testing Extends UIRefreshControl
- */
- extension UIRefreshControl {
- public override class func initialize() {
- struct Static {
- static var token: dispatch_once_t = 0
- }
- // make sure this isn't a subclass
- if self !== UIRefreshControl.self {
- return
- }
- dispatch_once(&Static.token) {
- var originalSelector = Selector("beginRefreshing")
- var swizzledSelector = Selector("kp_beginRefreshing")
- var originalMethod = class_getInstanceMethod(self, originalSelector)
- var swizzledMethod = class_getInstanceMethod(self, swizzledSelector)
- var didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))
- if didAddMethod {
- class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
- } else {
- method_exchangeImplementations(originalMethod, swizzledMethod)
- }
- originalSelector = Selector("endRefreshing")
- swizzledSelector = Selector("kp_endRefreshing")
- originalMethod = class_getInstanceMethod(self, originalSelector)
- swizzledMethod = class_getInstanceMethod(self, swizzledSelector)
- didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))
- if didAddMethod {
- class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
- } else {
- method_exchangeImplementations(originalMethod, swizzledMethod)
- }
- }
- }
- // MARK: - Method Swizzling
- // Overrides so that app idles correctly when running UITests
- func kp_beginRefreshing() {
- print("Mock: Begin Refreshing")
- }
- func kp_endRefreshing() {
- print("Mock: End Refreshing")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement