├── OSXPullToRefresh.podspec ├── OSXPullToRefresh.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── OSXPullToRefresh.xccheckout │ └── xcuserdata │ │ ├── Alex.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ ├── pretang.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── surrender.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ ├── Alex.xcuserdatad │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ │ ├── OSXPullToRefresh.xcscheme │ │ └── xcschememanagement.plist │ ├── pretang.xcuserdatad │ └── xcschemes │ │ ├── OSXPullToRefresh.xcscheme │ │ └── xcschememanagement.plist │ └── surrender.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── OSXPullToRefresh.xcscheme │ └── xcschememanagement.plist ├── OSXPullToRefresh ├── 80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png ├── AppDelegate.h ├── AppDelegate.m ├── Arrow.png ├── Arrow@2x.png ├── Base.lproj │ └── MainMenu.xib ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── OSXPullToRefresh-Info.plist ├── OSXPullToRefresh-Prefix.pch ├── OSXPullToRefreshScrollView.h ├── OSXPullToRefreshScrollView.m ├── en.lproj │ ├── Credits.rtf │ └── InfoPlist.strings └── main.m ├── OSXPullToRefreshTests ├── OSXPullToRefreshTests-Info.plist ├── OSXPullToRefreshTests.m └── en.lproj │ └── InfoPlist.strings └── README.md /OSXPullToRefresh.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod spec lint OSXPullToRefresh.podspec' to ensure this is a 3 | # valid spec and to remove all comments including this before submitting the spec. 4 | # 5 | # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html 6 | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | 11 | # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 12 | # 13 | # These will help people to find your library, and whilst it 14 | # can feel like a chore to fill in it's definitely to your advantage. The 15 | # summary should be tweet-length, and the description more in depth. 16 | # 17 | 18 | s.name = "OSXPullToRefresh" 19 | s.version = "0.0.1" 20 | s.summary = "A short description of OSXPullToRefresh." 21 | 22 | # This description is used to generate tags and improve search results. 23 | # * Think: What does it do? Why did you write it? What is the focus? 24 | # * Try to keep it short, snappy and to the point. 25 | # * Write the description between the DESC delimiters below. 26 | # * Finally, don't worry about the indent, CocoaPods strips it! 27 | s.description = <<-DESC 28 | DESC 29 | 30 | s.homepage = "http://EXAMPLE/OSXPullToRefresh" 31 | # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" 32 | 33 | 34 | # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 35 | # 36 | # Licensing your code is important. See http://choosealicense.com for more info. 37 | # CocoaPods will detect a license file if there is a named LICENSE* 38 | # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. 39 | # 40 | 41 | s.license = "MIT (example)" 42 | # s.license = { :type => "MIT", :file => "FILE_LICENSE" } 43 | 44 | 45 | # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 46 | # 47 | # Specify the authors of the library, with email addresses. Email addresses 48 | # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also 49 | # accepts just a name if you'd rather not provide an email address. 50 | # 51 | # Specify a social_media_url where others can refer to, for example a twitter 52 | # profile URL. 53 | # 54 | 55 | s.author = { "Alex" => "alexwuyujing@gmail.com" } 56 | # Or just: s.author = "Alex" 57 | # s.authors = { "Alex" => "alexwuyujing@gmail.com" } 58 | # s.social_media_url = "http://twitter.com/Alex" 59 | 60 | # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 61 | # 62 | # If this Pod runs only on iOS or OS X, then specify the platform and 63 | # the deployment target. You can optionally include the target after the platform. 64 | # 65 | 66 | # s.platform = :ios 67 | # s.platform = :ios, "5.0" 68 | 69 | # When using multiple platforms 70 | # s.ios.deployment_target = "5.0" 71 | # s.osx.deployment_target = "10.7" 72 | # s.watchos.deployment_target = "2.0" 73 | # s.tvos.deployment_target = "9.0" 74 | 75 | 76 | # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 77 | # 78 | # Specify the location from where the source should be retrieved. 79 | # Supports git, hg, bzr, svn and HTTP. 80 | # 81 | 82 | s.source = { :git => "http://EXAMPLE/OSXPullToRefresh.git", :tag => "0.0.1" } 83 | 84 | 85 | # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 86 | # 87 | # CocoaPods is smart about how it includes source code. For source files 88 | # giving a folder will include any swift, h, m, mm, c & cpp files. 89 | # For header files it will include any header in the folder. 90 | # Not including the public_header_files will make all headers public. 91 | # 92 | 93 | s.source_files = "Classes", "Classes/**/*.{h,m}" 94 | s.exclude_files = "Classes/Exclude" 95 | 96 | # s.public_header_files = "Classes/**/*.h" 97 | 98 | 99 | # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 100 | # 101 | # A list of resources included with the Pod. These are copied into the 102 | # target bundle with a build phase script. Anything else will be cleaned. 103 | # You can preserve files from being cleaned, please don't preserve 104 | # non-essential files like tests, examples and documentation. 105 | # 106 | 107 | # s.resource = "icon.png" 108 | # s.resources = "Resources/*.png" 109 | 110 | # s.preserve_paths = "FilesToSave", "MoreFilesToSave" 111 | 112 | 113 | # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 114 | # 115 | # Link your library with frameworks, or libraries. Libraries do not include 116 | # the lib prefix of their name. 117 | # 118 | 119 | # s.framework = "SomeFramework" 120 | # s.frameworks = "SomeFramework", "AnotherFramework" 121 | 122 | # s.library = "iconv" 123 | # s.libraries = "iconv", "xml2" 124 | 125 | 126 | # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 127 | # 128 | # If your library depends on compiler flags you can set them in the xcconfig hash 129 | # where they will only apply to your library. If you depend on other Podspecs 130 | # you can include multiple dependencies to ensure it works. 131 | 132 | # s.requires_arc = true 133 | 134 | # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } 135 | # s.dependency "JSONKit", "~> 1.4" 136 | 137 | end 138 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2F58A1D71ACA42CF0002C0CD /* 80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png in Resources */ = {isa = PBXBuildFile; fileRef = 2F58A1D61ACA42CF0002C0CD /* 80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png */; }; 11 | F748A30F187FBD9600129C16 /* OSXPullToRefreshScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = F748A30E187FBD9600129C16 /* OSXPullToRefreshScrollView.m */; }; 12 | F7D5E7B7187E736D00DFB965 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7D5E7B6187E736D00DFB965 /* Cocoa.framework */; }; 13 | F7D5E7C1187E736D00DFB965 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7BF187E736D00DFB965 /* InfoPlist.strings */; }; 14 | F7D5E7C3187E736D00DFB965 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D5E7C2187E736D00DFB965 /* main.m */; }; 15 | F7D5E7C7187E736D00DFB965 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7C5187E736D00DFB965 /* Credits.rtf */; }; 16 | F7D5E7CA187E736D00DFB965 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D5E7C9187E736D00DFB965 /* AppDelegate.m */; }; 17 | F7D5E7CD187E736D00DFB965 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7CB187E736D00DFB965 /* MainMenu.xib */; }; 18 | F7D5E7CF187E736D00DFB965 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7CE187E736D00DFB965 /* Images.xcassets */; }; 19 | F7D5E7D6187E736D00DFB965 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7D5E7D5187E736D00DFB965 /* XCTest.framework */; }; 20 | F7D5E7D7187E736D00DFB965 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7D5E7B6187E736D00DFB965 /* Cocoa.framework */; }; 21 | F7D5E7DF187E736D00DFB965 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7DD187E736D00DFB965 /* InfoPlist.strings */; }; 22 | F7D5E7E1187E736D00DFB965 /* OSXPullToRefreshTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D5E7E0187E736D00DFB965 /* OSXPullToRefreshTests.m */; }; 23 | F7D5E7FA187E9CDC00DFB965 /* Arrow.png in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7F8187E9CDC00DFB965 /* Arrow.png */; }; 24 | F7D5E7FB187E9CDC00DFB965 /* Arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F7D5E7F9187E9CDC00DFB965 /* Arrow@2x.png */; }; 25 | F7D5E7FD187E9E1300DFB965 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7D5E7FC187E9E1300DFB965 /* Quartz.framework */; }; 26 | /* End PBXBuildFile section */ 27 | 28 | /* Begin PBXContainerItemProxy section */ 29 | F7D5E7D8187E736D00DFB965 /* PBXContainerItemProxy */ = { 30 | isa = PBXContainerItemProxy; 31 | containerPortal = F7D5E7AB187E736C00DFB965 /* Project object */; 32 | proxyType = 1; 33 | remoteGlobalIDString = F7D5E7B2187E736D00DFB965; 34 | remoteInfo = OSXPullToRefresh; 35 | }; 36 | /* End PBXContainerItemProxy section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 2F58A1D61ACA42CF0002C0CD /* 80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png"; sourceTree = ""; }; 40 | F748A30D187FBD9600129C16 /* OSXPullToRefreshScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSXPullToRefreshScrollView.h; sourceTree = ""; }; 41 | F748A30E187FBD9600129C16 /* OSXPullToRefreshScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSXPullToRefreshScrollView.m; sourceTree = ""; }; 42 | F7D5E7B3187E736D00DFB965 /* OSXPullToRefresh.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OSXPullToRefresh.app; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | F7D5E7B6187E736D00DFB965 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 44 | F7D5E7B9187E736D00DFB965 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 45 | F7D5E7BA187E736D00DFB965 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 46 | F7D5E7BB187E736D00DFB965 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 47 | F7D5E7BE187E736D00DFB965 /* OSXPullToRefresh-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OSXPullToRefresh-Info.plist"; sourceTree = ""; }; 48 | F7D5E7C0187E736D00DFB965 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 49 | F7D5E7C2187E736D00DFB965 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 50 | F7D5E7C4187E736D00DFB965 /* OSXPullToRefresh-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OSXPullToRefresh-Prefix.pch"; sourceTree = ""; }; 51 | F7D5E7C6187E736D00DFB965 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 52 | F7D5E7C8187E736D00DFB965 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 53 | F7D5E7C9187E736D00DFB965 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 54 | F7D5E7CC187E736D00DFB965 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 55 | F7D5E7CE187E736D00DFB965 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 56 | F7D5E7D4187E736D00DFB965 /* OSXPullToRefreshTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OSXPullToRefreshTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | F7D5E7D5187E736D00DFB965 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 58 | F7D5E7DC187E736D00DFB965 /* OSXPullToRefreshTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OSXPullToRefreshTests-Info.plist"; sourceTree = ""; }; 59 | F7D5E7DE187E736D00DFB965 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 60 | F7D5E7E0187E736D00DFB965 /* OSXPullToRefreshTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OSXPullToRefreshTests.m; sourceTree = ""; }; 61 | F7D5E7F8187E9CDC00DFB965 /* Arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Arrow.png; sourceTree = ""; }; 62 | F7D5E7F9187E9CDC00DFB965 /* Arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Arrow@2x.png"; sourceTree = ""; }; 63 | F7D5E7FC187E9E1300DFB965 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; 64 | /* End PBXFileReference section */ 65 | 66 | /* Begin PBXFrameworksBuildPhase section */ 67 | F7D5E7B0187E736D00DFB965 /* Frameworks */ = { 68 | isa = PBXFrameworksBuildPhase; 69 | buildActionMask = 2147483647; 70 | files = ( 71 | F7D5E7FD187E9E1300DFB965 /* Quartz.framework in Frameworks */, 72 | F7D5E7B7187E736D00DFB965 /* Cocoa.framework in Frameworks */, 73 | ); 74 | runOnlyForDeploymentPostprocessing = 0; 75 | }; 76 | F7D5E7D1187E736D00DFB965 /* Frameworks */ = { 77 | isa = PBXFrameworksBuildPhase; 78 | buildActionMask = 2147483647; 79 | files = ( 80 | F7D5E7D7187E736D00DFB965 /* Cocoa.framework in Frameworks */, 81 | F7D5E7D6187E736D00DFB965 /* XCTest.framework in Frameworks */, 82 | ); 83 | runOnlyForDeploymentPostprocessing = 0; 84 | }; 85 | /* End PBXFrameworksBuildPhase section */ 86 | 87 | /* Begin PBXGroup section */ 88 | F7D5E7AA187E736C00DFB965 = { 89 | isa = PBXGroup; 90 | children = ( 91 | F7D5E7BC187E736D00DFB965 /* OSXPullToRefresh */, 92 | F7D5E7DA187E736D00DFB965 /* OSXPullToRefreshTests */, 93 | F7D5E7B5187E736D00DFB965 /* Frameworks */, 94 | F7D5E7B4187E736D00DFB965 /* Products */, 95 | ); 96 | sourceTree = ""; 97 | }; 98 | F7D5E7B4187E736D00DFB965 /* Products */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | F7D5E7B3187E736D00DFB965 /* OSXPullToRefresh.app */, 102 | F7D5E7D4187E736D00DFB965 /* OSXPullToRefreshTests.xctest */, 103 | ); 104 | name = Products; 105 | sourceTree = ""; 106 | }; 107 | F7D5E7B5187E736D00DFB965 /* Frameworks */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | F7D5E7FC187E9E1300DFB965 /* Quartz.framework */, 111 | F7D5E7B6187E736D00DFB965 /* Cocoa.framework */, 112 | F7D5E7D5187E736D00DFB965 /* XCTest.framework */, 113 | F7D5E7B8187E736D00DFB965 /* Other Frameworks */, 114 | ); 115 | name = Frameworks; 116 | sourceTree = ""; 117 | }; 118 | F7D5E7B8187E736D00DFB965 /* Other Frameworks */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | F7D5E7B9187E736D00DFB965 /* AppKit.framework */, 122 | F7D5E7BA187E736D00DFB965 /* CoreData.framework */, 123 | F7D5E7BB187E736D00DFB965 /* Foundation.framework */, 124 | ); 125 | name = "Other Frameworks"; 126 | sourceTree = ""; 127 | }; 128 | F7D5E7BC187E736D00DFB965 /* OSXPullToRefresh */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | F7D5E7C8187E736D00DFB965 /* AppDelegate.h */, 132 | F7D5E7C9187E736D00DFB965 /* AppDelegate.m */, 133 | F7D5E7CB187E736D00DFB965 /* MainMenu.xib */, 134 | F748A30D187FBD9600129C16 /* OSXPullToRefreshScrollView.h */, 135 | F748A30E187FBD9600129C16 /* OSXPullToRefreshScrollView.m */, 136 | F7D5E7CE187E736D00DFB965 /* Images.xcassets */, 137 | F7D5E7BD187E736D00DFB965 /* Supporting Files */, 138 | ); 139 | path = OSXPullToRefresh; 140 | sourceTree = ""; 141 | }; 142 | F7D5E7BD187E736D00DFB965 /* Supporting Files */ = { 143 | isa = PBXGroup; 144 | children = ( 145 | 2F58A1D61ACA42CF0002C0CD /* 80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png */, 146 | F7D5E7F8187E9CDC00DFB965 /* Arrow.png */, 147 | F7D5E7F9187E9CDC00DFB965 /* Arrow@2x.png */, 148 | F7D5E7BE187E736D00DFB965 /* OSXPullToRefresh-Info.plist */, 149 | F7D5E7BF187E736D00DFB965 /* InfoPlist.strings */, 150 | F7D5E7C2187E736D00DFB965 /* main.m */, 151 | F7D5E7C4187E736D00DFB965 /* OSXPullToRefresh-Prefix.pch */, 152 | F7D5E7C5187E736D00DFB965 /* Credits.rtf */, 153 | ); 154 | name = "Supporting Files"; 155 | sourceTree = ""; 156 | }; 157 | F7D5E7DA187E736D00DFB965 /* OSXPullToRefreshTests */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | F7D5E7E0187E736D00DFB965 /* OSXPullToRefreshTests.m */, 161 | F7D5E7DB187E736D00DFB965 /* Supporting Files */, 162 | ); 163 | path = OSXPullToRefreshTests; 164 | sourceTree = ""; 165 | }; 166 | F7D5E7DB187E736D00DFB965 /* Supporting Files */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | F7D5E7DC187E736D00DFB965 /* OSXPullToRefreshTests-Info.plist */, 170 | F7D5E7DD187E736D00DFB965 /* InfoPlist.strings */, 171 | ); 172 | name = "Supporting Files"; 173 | sourceTree = ""; 174 | }; 175 | /* End PBXGroup section */ 176 | 177 | /* Begin PBXNativeTarget section */ 178 | F7D5E7B2187E736D00DFB965 /* OSXPullToRefresh */ = { 179 | isa = PBXNativeTarget; 180 | buildConfigurationList = F7D5E7E4187E736D00DFB965 /* Build configuration list for PBXNativeTarget "OSXPullToRefresh" */; 181 | buildPhases = ( 182 | F7D5E7AF187E736D00DFB965 /* Sources */, 183 | F7D5E7B0187E736D00DFB965 /* Frameworks */, 184 | F7D5E7B1187E736D00DFB965 /* Resources */, 185 | ); 186 | buildRules = ( 187 | ); 188 | dependencies = ( 189 | ); 190 | name = OSXPullToRefresh; 191 | productName = OSXPullToRefresh; 192 | productReference = F7D5E7B3187E736D00DFB965 /* OSXPullToRefresh.app */; 193 | productType = "com.apple.product-type.application"; 194 | }; 195 | F7D5E7D3187E736D00DFB965 /* OSXPullToRefreshTests */ = { 196 | isa = PBXNativeTarget; 197 | buildConfigurationList = F7D5E7E7187E736D00DFB965 /* Build configuration list for PBXNativeTarget "OSXPullToRefreshTests" */; 198 | buildPhases = ( 199 | F7D5E7D0187E736D00DFB965 /* Sources */, 200 | F7D5E7D1187E736D00DFB965 /* Frameworks */, 201 | F7D5E7D2187E736D00DFB965 /* Resources */, 202 | ); 203 | buildRules = ( 204 | ); 205 | dependencies = ( 206 | F7D5E7D9187E736D00DFB965 /* PBXTargetDependency */, 207 | ); 208 | name = OSXPullToRefreshTests; 209 | productName = OSXPullToRefreshTests; 210 | productReference = F7D5E7D4187E736D00DFB965 /* OSXPullToRefreshTests.xctest */; 211 | productType = "com.apple.product-type.bundle.unit-test"; 212 | }; 213 | /* End PBXNativeTarget section */ 214 | 215 | /* Begin PBXProject section */ 216 | F7D5E7AB187E736C00DFB965 /* Project object */ = { 217 | isa = PBXProject; 218 | attributes = { 219 | LastUpgradeCheck = 0500; 220 | ORGANIZATIONNAME = surrender; 221 | TargetAttributes = { 222 | F7D5E7D3187E736D00DFB965 = { 223 | TestTargetID = F7D5E7B2187E736D00DFB965; 224 | }; 225 | }; 226 | }; 227 | buildConfigurationList = F7D5E7AE187E736C00DFB965 /* Build configuration list for PBXProject "OSXPullToRefresh" */; 228 | compatibilityVersion = "Xcode 3.2"; 229 | developmentRegion = English; 230 | hasScannedForEncodings = 0; 231 | knownRegions = ( 232 | en, 233 | Base, 234 | ); 235 | mainGroup = F7D5E7AA187E736C00DFB965; 236 | productRefGroup = F7D5E7B4187E736D00DFB965 /* Products */; 237 | projectDirPath = ""; 238 | projectRoot = ""; 239 | targets = ( 240 | F7D5E7B2187E736D00DFB965 /* OSXPullToRefresh */, 241 | F7D5E7D3187E736D00DFB965 /* OSXPullToRefreshTests */, 242 | ); 243 | }; 244 | /* End PBXProject section */ 245 | 246 | /* Begin PBXResourcesBuildPhase section */ 247 | F7D5E7B1187E736D00DFB965 /* Resources */ = { 248 | isa = PBXResourcesBuildPhase; 249 | buildActionMask = 2147483647; 250 | files = ( 251 | F7D5E7C1187E736D00DFB965 /* InfoPlist.strings in Resources */, 252 | F7D5E7CF187E736D00DFB965 /* Images.xcassets in Resources */, 253 | F7D5E7FB187E9CDC00DFB965 /* Arrow@2x.png in Resources */, 254 | F7D5E7C7187E736D00DFB965 /* Credits.rtf in Resources */, 255 | F7D5E7FA187E9CDC00DFB965 /* Arrow.png in Resources */, 256 | 2F58A1D71ACA42CF0002C0CD /* 80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png in Resources */, 257 | F7D5E7CD187E736D00DFB965 /* MainMenu.xib in Resources */, 258 | ); 259 | runOnlyForDeploymentPostprocessing = 0; 260 | }; 261 | F7D5E7D2187E736D00DFB965 /* Resources */ = { 262 | isa = PBXResourcesBuildPhase; 263 | buildActionMask = 2147483647; 264 | files = ( 265 | F7D5E7DF187E736D00DFB965 /* InfoPlist.strings in Resources */, 266 | ); 267 | runOnlyForDeploymentPostprocessing = 0; 268 | }; 269 | /* End PBXResourcesBuildPhase section */ 270 | 271 | /* Begin PBXSourcesBuildPhase section */ 272 | F7D5E7AF187E736D00DFB965 /* Sources */ = { 273 | isa = PBXSourcesBuildPhase; 274 | buildActionMask = 2147483647; 275 | files = ( 276 | F7D5E7CA187E736D00DFB965 /* AppDelegate.m in Sources */, 277 | F748A30F187FBD9600129C16 /* OSXPullToRefreshScrollView.m in Sources */, 278 | F7D5E7C3187E736D00DFB965 /* main.m in Sources */, 279 | ); 280 | runOnlyForDeploymentPostprocessing = 0; 281 | }; 282 | F7D5E7D0187E736D00DFB965 /* Sources */ = { 283 | isa = PBXSourcesBuildPhase; 284 | buildActionMask = 2147483647; 285 | files = ( 286 | F7D5E7E1187E736D00DFB965 /* OSXPullToRefreshTests.m in Sources */, 287 | ); 288 | runOnlyForDeploymentPostprocessing = 0; 289 | }; 290 | /* End PBXSourcesBuildPhase section */ 291 | 292 | /* Begin PBXTargetDependency section */ 293 | F7D5E7D9187E736D00DFB965 /* PBXTargetDependency */ = { 294 | isa = PBXTargetDependency; 295 | target = F7D5E7B2187E736D00DFB965 /* OSXPullToRefresh */; 296 | targetProxy = F7D5E7D8187E736D00DFB965 /* PBXContainerItemProxy */; 297 | }; 298 | /* End PBXTargetDependency section */ 299 | 300 | /* Begin PBXVariantGroup section */ 301 | F7D5E7BF187E736D00DFB965 /* InfoPlist.strings */ = { 302 | isa = PBXVariantGroup; 303 | children = ( 304 | F7D5E7C0187E736D00DFB965 /* en */, 305 | ); 306 | name = InfoPlist.strings; 307 | sourceTree = ""; 308 | }; 309 | F7D5E7C5187E736D00DFB965 /* Credits.rtf */ = { 310 | isa = PBXVariantGroup; 311 | children = ( 312 | F7D5E7C6187E736D00DFB965 /* en */, 313 | ); 314 | name = Credits.rtf; 315 | sourceTree = ""; 316 | }; 317 | F7D5E7CB187E736D00DFB965 /* MainMenu.xib */ = { 318 | isa = PBXVariantGroup; 319 | children = ( 320 | F7D5E7CC187E736D00DFB965 /* Base */, 321 | ); 322 | name = MainMenu.xib; 323 | sourceTree = ""; 324 | }; 325 | F7D5E7DD187E736D00DFB965 /* InfoPlist.strings */ = { 326 | isa = PBXVariantGroup; 327 | children = ( 328 | F7D5E7DE187E736D00DFB965 /* en */, 329 | ); 330 | name = InfoPlist.strings; 331 | sourceTree = ""; 332 | }; 333 | /* End PBXVariantGroup section */ 334 | 335 | /* Begin XCBuildConfiguration section */ 336 | F7D5E7E2187E736D00DFB965 /* Debug */ = { 337 | isa = XCBuildConfiguration; 338 | buildSettings = { 339 | ALWAYS_SEARCH_USER_PATHS = NO; 340 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 341 | CLANG_CXX_LIBRARY = "libc++"; 342 | CLANG_ENABLE_OBJC_ARC = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_CONSTANT_CONVERSION = YES; 345 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 346 | CLANG_WARN_EMPTY_BODY = YES; 347 | CLANG_WARN_ENUM_CONVERSION = YES; 348 | CLANG_WARN_INT_CONVERSION = YES; 349 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 350 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 351 | COPY_PHASE_STRIP = NO; 352 | GCC_C_LANGUAGE_STANDARD = gnu99; 353 | GCC_DYNAMIC_NO_PIC = NO; 354 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 355 | GCC_OPTIMIZATION_LEVEL = 0; 356 | GCC_PREPROCESSOR_DEFINITIONS = ( 357 | "DEBUG=1", 358 | "$(inherited)", 359 | ); 360 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 361 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 362 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 363 | GCC_WARN_UNDECLARED_SELECTOR = YES; 364 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 365 | GCC_WARN_UNUSED_FUNCTION = YES; 366 | GCC_WARN_UNUSED_VARIABLE = YES; 367 | MACOSX_DEPLOYMENT_TARGET = 10.8; 368 | ONLY_ACTIVE_ARCH = YES; 369 | SDKROOT = macosx; 370 | }; 371 | name = Debug; 372 | }; 373 | F7D5E7E3187E736D00DFB965 /* Release */ = { 374 | isa = XCBuildConfiguration; 375 | buildSettings = { 376 | ALWAYS_SEARCH_USER_PATHS = NO; 377 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 378 | CLANG_CXX_LIBRARY = "libc++"; 379 | CLANG_ENABLE_OBJC_ARC = YES; 380 | CLANG_WARN_BOOL_CONVERSION = YES; 381 | CLANG_WARN_CONSTANT_CONVERSION = YES; 382 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 383 | CLANG_WARN_EMPTY_BODY = YES; 384 | CLANG_WARN_ENUM_CONVERSION = YES; 385 | CLANG_WARN_INT_CONVERSION = YES; 386 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 387 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 388 | COPY_PHASE_STRIP = YES; 389 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 390 | ENABLE_NS_ASSERTIONS = NO; 391 | GCC_C_LANGUAGE_STANDARD = gnu99; 392 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 393 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 394 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 395 | GCC_WARN_UNDECLARED_SELECTOR = YES; 396 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 397 | GCC_WARN_UNUSED_FUNCTION = YES; 398 | GCC_WARN_UNUSED_VARIABLE = YES; 399 | MACOSX_DEPLOYMENT_TARGET = 10.8; 400 | SDKROOT = macosx; 401 | }; 402 | name = Release; 403 | }; 404 | F7D5E7E5187E736D00DFB965 /* Debug */ = { 405 | isa = XCBuildConfiguration; 406 | buildSettings = { 407 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 408 | COMBINE_HIDPI_IMAGES = YES; 409 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 410 | GCC_PREFIX_HEADER = "OSXPullToRefresh/OSXPullToRefresh-Prefix.pch"; 411 | INFOPLIST_FILE = "OSXPullToRefresh/OSXPullToRefresh-Info.plist"; 412 | PRODUCT_NAME = "$(TARGET_NAME)"; 413 | WRAPPER_EXTENSION = app; 414 | }; 415 | name = Debug; 416 | }; 417 | F7D5E7E6187E736D00DFB965 /* Release */ = { 418 | isa = XCBuildConfiguration; 419 | buildSettings = { 420 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 421 | COMBINE_HIDPI_IMAGES = YES; 422 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 423 | GCC_PREFIX_HEADER = "OSXPullToRefresh/OSXPullToRefresh-Prefix.pch"; 424 | INFOPLIST_FILE = "OSXPullToRefresh/OSXPullToRefresh-Info.plist"; 425 | PRODUCT_NAME = "$(TARGET_NAME)"; 426 | WRAPPER_EXTENSION = app; 427 | }; 428 | name = Release; 429 | }; 430 | F7D5E7E8187E736D00DFB965 /* Debug */ = { 431 | isa = XCBuildConfiguration; 432 | buildSettings = { 433 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/OSXPullToRefresh.app/Contents/MacOS/OSXPullToRefresh"; 434 | COMBINE_HIDPI_IMAGES = YES; 435 | FRAMEWORK_SEARCH_PATHS = ( 436 | "$(DEVELOPER_FRAMEWORKS_DIR)", 437 | "$(inherited)", 438 | ); 439 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 440 | GCC_PREFIX_HEADER = "OSXPullToRefresh/OSXPullToRefresh-Prefix.pch"; 441 | GCC_PREPROCESSOR_DEFINITIONS = ( 442 | "DEBUG=1", 443 | "$(inherited)", 444 | ); 445 | INFOPLIST_FILE = "OSXPullToRefreshTests/OSXPullToRefreshTests-Info.plist"; 446 | PRODUCT_NAME = "$(TARGET_NAME)"; 447 | TEST_HOST = "$(BUNDLE_LOADER)"; 448 | WRAPPER_EXTENSION = xctest; 449 | }; 450 | name = Debug; 451 | }; 452 | F7D5E7E9187E736D00DFB965 /* Release */ = { 453 | isa = XCBuildConfiguration; 454 | buildSettings = { 455 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/OSXPullToRefresh.app/Contents/MacOS/OSXPullToRefresh"; 456 | COMBINE_HIDPI_IMAGES = YES; 457 | FRAMEWORK_SEARCH_PATHS = ( 458 | "$(DEVELOPER_FRAMEWORKS_DIR)", 459 | "$(inherited)", 460 | ); 461 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 462 | GCC_PREFIX_HEADER = "OSXPullToRefresh/OSXPullToRefresh-Prefix.pch"; 463 | INFOPLIST_FILE = "OSXPullToRefreshTests/OSXPullToRefreshTests-Info.plist"; 464 | PRODUCT_NAME = "$(TARGET_NAME)"; 465 | TEST_HOST = "$(BUNDLE_LOADER)"; 466 | WRAPPER_EXTENSION = xctest; 467 | }; 468 | name = Release; 469 | }; 470 | /* End XCBuildConfiguration section */ 471 | 472 | /* Begin XCConfigurationList section */ 473 | F7D5E7AE187E736C00DFB965 /* Build configuration list for PBXProject "OSXPullToRefresh" */ = { 474 | isa = XCConfigurationList; 475 | buildConfigurations = ( 476 | F7D5E7E2187E736D00DFB965 /* Debug */, 477 | F7D5E7E3187E736D00DFB965 /* Release */, 478 | ); 479 | defaultConfigurationIsVisible = 0; 480 | defaultConfigurationName = Release; 481 | }; 482 | F7D5E7E4187E736D00DFB965 /* Build configuration list for PBXNativeTarget "OSXPullToRefresh" */ = { 483 | isa = XCConfigurationList; 484 | buildConfigurations = ( 485 | F7D5E7E5187E736D00DFB965 /* Debug */, 486 | F7D5E7E6187E736D00DFB965 /* Release */, 487 | ); 488 | defaultConfigurationIsVisible = 0; 489 | defaultConfigurationName = Release; 490 | }; 491 | F7D5E7E7187E736D00DFB965 /* Build configuration list for PBXNativeTarget "OSXPullToRefreshTests" */ = { 492 | isa = XCConfigurationList; 493 | buildConfigurations = ( 494 | F7D5E7E8187E736D00DFB965 /* Debug */, 495 | F7D5E7E9187E736D00DFB965 /* Release */, 496 | ); 497 | defaultConfigurationIsVisible = 0; 498 | defaultConfigurationName = Release; 499 | }; 500 | /* End XCConfigurationList section */ 501 | }; 502 | rootObject = F7D5E7AB187E736C00DFB965 /* Project object */; 503 | } 504 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/project.xcworkspace/xcshareddata/OSXPullToRefresh.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | DF49A24A-16AE-4A68-9F7C-FABA57C3146C 9 | IDESourceControlProjectName 10 | OSXPullToRefresh 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 00CBC0814C00503102C4D8EE63B09CC2D77C665C 14 | https://github.com/surrenderios/OSXPullToRefresh.git 15 | 16 | IDESourceControlProjectPath 17 | OSXPullToRefresh.xcodeproj 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 00CBC0814C00503102C4D8EE63B09CC2D77C665C 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | https://github.com/surrenderios/OSXPullToRefresh.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 00CBC0814C00503102C4D8EE63B09CC2D77C665C 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 00CBC0814C00503102C4D8EE63B09CC2D77C665C 36 | IDESourceControlWCCName 37 | OSXPullToRefresh 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/project.xcworkspace/xcuserdata/Alex.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surrenderios/OSXPullToRefresh/e6bbbf7473f5b00f65418f3b2b106e0ec210b7ac/OSXPullToRefresh.xcodeproj/project.xcworkspace/xcuserdata/Alex.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/project.xcworkspace/xcuserdata/pretang.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surrenderios/OSXPullToRefresh/e6bbbf7473f5b00f65418f3b2b106e0ec210b7ac/OSXPullToRefresh.xcodeproj/project.xcworkspace/xcuserdata/pretang.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/project.xcworkspace/xcuserdata/surrender.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surrenderios/OSXPullToRefresh/e6bbbf7473f5b00f65418f3b2b106e0ec210b7ac/OSXPullToRefresh.xcodeproj/project.xcworkspace/xcuserdata/surrender.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/Alex.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/Alex.xcuserdatad/xcschemes/OSXPullToRefresh.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/Alex.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | OSXPullToRefresh.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | F7D5E7B2187E736D00DFB965 16 | 17 | primary 18 | 19 | 20 | F7D5E7D3187E736D00DFB965 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/pretang.xcuserdatad/xcschemes/OSXPullToRefresh.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 75 | 77 | 83 | 84 | 85 | 86 | 87 | 88 | 94 | 96 | 102 | 103 | 104 | 105 | 107 | 108 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/pretang.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | OSXPullToRefresh.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | F7D5E7B2187E736D00DFB965 16 | 17 | primary 18 | 19 | 20 | F7D5E7D3187E736D00DFB965 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/surrender.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/surrender.xcuserdatad/xcschemes/OSXPullToRefresh.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /OSXPullToRefresh.xcodeproj/xcuserdata/surrender.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | OSXPullToRefresh.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | F7D5E7B2187E736D00DFB965 16 | 17 | primary 18 | 19 | 20 | F7D5E7D3187E736D00DFB965 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /OSXPullToRefresh/80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surrenderios/OSXPullToRefresh/e6bbbf7473f5b00f65418f3b2b106e0ec210b7ac/OSXPullToRefresh/80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png -------------------------------------------------------------------------------- /OSXPullToRefresh/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // OSXPullToRefresh 4 | // 5 | // Created by surrender on 14-1-9. 6 | // Copyright (c) 2014年 surrender. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OSXPullToRefreshScrollView.h" 11 | 12 | @interface AppDelegate : NSObject 13 | 14 | @property (assign) IBOutlet NSWindow *window; 15 | @property (unsafe_unretained) IBOutlet NSTextView *textView; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /OSXPullToRefresh/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // OSXPullToRefresh 4 | // 5 | // Created by surrender on 14-1-9. 6 | // Copyright (c) 2014年 surrender. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 14 | { 15 | // Insert code here to initialize your application 16 | 17 | // [_scrollView startLoading]; 18 | } 19 | 20 | 21 | - (void)awakeFromNib 22 | { 23 | [_textView setString:@"针对NSScrollView下拉刷新做了简单的实现,可以修改添加更加细致的效果,以及添加数据源和代理,谢谢支持!"]; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /OSXPullToRefresh/Arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surrenderios/OSXPullToRefresh/e6bbbf7473f5b00f65418f3b2b106e0ec210b7ac/OSXPullToRefresh/Arrow.png -------------------------------------------------------------------------------- /OSXPullToRefresh/Arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surrenderios/OSXPullToRefresh/e6bbbf7473f5b00f65418f3b2b106e0ec210b7ac/OSXPullToRefresh/Arrow@2x.png -------------------------------------------------------------------------------- /OSXPullToRefresh/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | Default 523 | 524 | 525 | 526 | 527 | 528 | 529 | Left to Right 530 | 531 | 532 | 533 | 534 | 535 | 536 | Right to Left 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | Default 548 | 549 | 550 | 551 | 552 | 553 | 554 | Left to Right 555 | 556 | 557 | 558 | 559 | 560 | 561 | Right to Left 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | -------------------------------------------------------------------------------- /OSXPullToRefresh/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /OSXPullToRefresh/OSXPullToRefresh-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | alex.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSHumanReadableCopyright 28 | Copyright © 2014年 surrender. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | 34 | 35 | -------------------------------------------------------------------------------- /OSXPullToRefresh/OSXPullToRefresh-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /OSXPullToRefresh/OSXPullToRefreshScrollView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OSXPullToRefreshScrollView.h 3 | // OSXPullToRefresh 4 | // 5 | // Created by surrender on 14-1-10. 6 | // Copyright (c) 2014年 surrender. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface OSXPullToRefreshScrollView : NSScrollView 12 | @property (readonly) NSView *headerView; 13 | @property (readonly) NSTextField *textField; 14 | @property (readonly) NSProgressIndicator *indicator; 15 | @property (readonly) BOOL isRefreshing; 16 | 17 | - (void)startLoading; 18 | - (void)stopLoading; 19 | @end 20 | -------------------------------------------------------------------------------- /OSXPullToRefresh/OSXPullToRefreshScrollView.m: -------------------------------------------------------------------------------- 1 | // 2 | // OSXPullToRefreshScrollView.m 3 | // OSXPullToRefresh 4 | // 5 | // Created by surrender on 14-1-10. 6 | // Copyright (c) 2014年 surrender. All rights reserved. 7 | // 8 | 9 | #import "OSXPullToRefreshScrollView.h" 10 | 11 | #define HEADERVIEW_HEIGHT 30 12 | 13 | @implementation OSXPullToRefreshScrollView 14 | @synthesize isRefreshing = _isRefreshing; 15 | 16 | - (void)awakeFromNib 17 | { 18 | //receive the notification that NSView's bounds changes posted 19 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boundsDidChanged:) name:NSViewBoundsDidChangeNotification object:nil]; 20 | //receive the notification that NSWindow size changes posted 21 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:nil]; 22 | } 23 | 24 | - (void)boundsDidChanged:(NSNotification *)note 25 | { 26 | if (_isRefreshing) return; 27 | 28 | if ([self isOverHeadView]) { 29 | [_textField setHidden:YES]; 30 | [_indicator setHidden:NO]; 31 | }else{ 32 | [_textField setHidden:NO]; 33 | [_indicator setHidden:YES]; 34 | } 35 | } 36 | 37 | - (void)windowDidResize:(NSNotification *)note 38 | { 39 | if (_isRefreshing) { 40 | [_headerView removeFromSuperview]; 41 | }else{ 42 | [self createHeaderView:NSMakePoint(0, 0-HEADERVIEW_HEIGHT)]; 43 | } 44 | } 45 | 46 | 47 | - (void)createHeaderView:(NSPoint)originPoint 48 | { 49 | if (_headerView) { 50 | [_headerView removeFromSuperview]; 51 | _headerView = nil; 52 | } 53 | 54 | NSRect contentRect = [[self contentView] frame]; 55 | _headerView = [[NSView alloc]initWithFrame:NSMakeRect(originPoint.x,originPoint.y,contentRect.size.width, HEADERVIEW_HEIGHT)]; 56 | 57 | _textField = [[NSTextField alloc]initWithFrame:NSMakeRect((contentRect.size.width/2 - 30), 0, 60, 30)]; 58 | [_textField setBordered:NO]; 59 | [_textField setSelectable:NO]; 60 | [_textField setStringValue:@"下拉刷新"]; 61 | [_textField setBackgroundColor:[NSColor controlColor]]; 62 | 63 | _indicator = [[NSProgressIndicator alloc]initWithFrame:NSMakeRect((contentRect.size.width/2 - 16), 0, 32, 32)]; 64 | [_indicator setStyle:NSProgressIndicatorSpinningStyle]; 65 | [_indicator setBezeled:NO]; 66 | 67 | [_headerView addSubview:_textField]; 68 | [_headerView addSubview:_indicator]; 69 | 70 | _headerView.autoresizingMask = NSViewMinXMargin | NSViewMaxXMargin | NSViewWidthSizable | NSViewMinYMargin |NSViewMaxYMargin |NSViewHeightSizable; 71 | [_headerView setAutoresizesSubviews:YES]; 72 | 73 | [self.contentView addSubview:_headerView]; 74 | } 75 | 76 | - (void)scrollWheel:(NSEvent *)theEvent 77 | { 78 | //theEvent.deltaY can not ensure upward or downword if user set mouse scroll direction wired 79 | //if isRefreshing,so stop the scroll 80 | if (_isRefreshing) return; 81 | if (theEvent.phase == NSEventPhaseEnded) { 82 | if (!_isRefreshing && [self isOverHeadView]) { 83 | [self startLoading]; 84 | } 85 | } 86 | //without next,the bounds changed notification can not post 87 | [super scrollWheel:theEvent]; 88 | } 89 | 90 | - (BOOL)isOverHeadView 91 | { 92 | NSClipView *clipView = [self contentView]; 93 | CGFloat scrolledY = clipView.bounds.origin.y; 94 | CGFloat miniScrolledY = 0 - HEADERVIEW_HEIGHT; 95 | return scrolledY <= miniScrolledY; 96 | // return abs(scrolledY) > HEADERVIEW_HEIGHT; // > or = is both ok 97 | } 98 | 99 | - (void)startLoading 100 | { 101 | _isRefreshing = YES; 102 | // move downwards documentView 30 Pix 103 | [self.documentView setFrameOrigin:NSMakePoint(0,HEADERVIEW_HEIGHT)]; 104 | //设置_headerView的初始位置到(0,0); 105 | [self createHeaderView:NSMakePoint(0, 0)]; 106 | [self.contentView addSubview:_headerView]; 107 | 108 | [self.contentView scrollToPoint:NSMakePoint(0, 0)]; 109 | 110 | [_textField setHidden:YES]; 111 | [_indicator startAnimation:nil]; 112 | 113 | [self performSelector:@selector(stopLoading) withObject:nil afterDelay:3]; 114 | } 115 | 116 | - (void)stopLoading 117 | { 118 | _isRefreshing = NO; 119 | [self createHeaderView:NSMakePoint(0, 0-HEADERVIEW_HEIGHT)]; 120 | [[self.documentView animator]setFrameOrigin:NSMakePoint(0, 0)]; 121 | } 122 | @end 123 | -------------------------------------------------------------------------------- /OSXPullToRefresh/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /OSXPullToRefresh/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /OSXPullToRefresh/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // OSXPullToRefresh 4 | // 5 | // Created by surrender on 14-1-9. 6 | // Copyright (c) 2014年 surrender. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | return NSApplicationMain(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /OSXPullToRefreshTests/OSXPullToRefreshTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | alex.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /OSXPullToRefreshTests/OSXPullToRefreshTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // OSXPullToRefreshTests.m 3 | // OSXPullToRefreshTests 4 | // 5 | // Created by surrender on 14-1-9. 6 | // Copyright (c) 2014年 surrender. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface OSXPullToRefreshTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation OSXPullToRefreshTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /OSXPullToRefreshTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OSXPullToRefresh 2 | for Mac OS X NSScrollView Pull to Refresh 3 | 4 | usage: 5 | 6 | You can simply indicate NSScrollView Class with "OSXPullToRefreshScrollView" in XIB. 7 | 8 | Or use cocoapods 'pod OSXPullToRefresh' 9 | 10 | ![](https://github.com/surrenderios/OSXPullToRefresh/blob/master/OSXPullToRefresh/80B7F5E6-32D4-4B5B-9B8E-0392AF6288D3.png) 11 | --------------------------------------------------------------------------------