Browse Source

处理编译警告

Steven 4 months ago
parent
commit
656a4a6a3a
100 changed files with 5667 additions and 4765 deletions
  1. 0 4
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 10 10
      KulexiuForTeacher/Podfile
  3. 29 45
      KulexiuForTeacher/Podfile.lock
  4. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/AlipaySDK
  5. 40 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/Info.plist
  6. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK
  7. 0 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK-inside-Info.plist
  8. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png
  9. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png
  10. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png
  11. 1 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bridge.js
  12. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png
  13. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png
  14. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png
  15. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png
  16. 0 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceCenter.h
  17. 0 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceResponse.h
  18. 0 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/APayAuthInfo.h
  19. 28 5
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AlipaySDK.h
  20. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK
  21. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK-inside-Info.plist
  22. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png
  23. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png
  24. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png
  25. 1 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bridge.js
  26. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png
  27. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png
  28. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png
  29. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png
  30. 56 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceCenter.h
  31. 43 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceResponse.h
  32. 33 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/APayAuthInfo.h
  33. 246 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AlipaySDK.h
  34. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeDirectory
  35. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements
  36. BIN
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements-1
  37. 319 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeResources
  38. 0 0
      KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeSignature
  39. 1 1
      KulexiuForTeacher/Pods/AlipaySDK-iOS/LICENSE
  40. BIN
      KulexiuForTeacher/Pods/Bugly/Bugly.framework/Bugly
  41. 1 1
      KulexiuForTeacher/Pods/Bugly/Bugly.framework/Headers/Bugly.h
  42. 41 0
      KulexiuForTeacher/Pods/Bugly/Bugly.framework/PrivacyInfo.xcprivacy
  43. 1 0
      KulexiuForTeacher/Pods/Headers/Private/RSKImageCropper/RSKImageScrollViewDelegate.h
  44. 1 0
      KulexiuForTeacher/Pods/Headers/Private/White_YYModel/NSObject+White_YYModel.h
  45. 1 0
      KulexiuForTeacher/Pods/Headers/Private/White_YYModel/White_YYClassInfo.h
  46. 1 0
      KulexiuForTeacher/Pods/Headers/Private/White_YYModel/White_YYModel.h
  47. 0 1
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/NSObject+YY.h
  48. 1 0
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteAppSyncAttributes.h
  49. 1 0
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteAudioEffectMixerBridge.h
  50. 1 0
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteProjectorStaticImageInfo.h
  51. 1 0
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSlideAppParams.h
  52. 1 0
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSlideDelegate.h
  53. 0 1
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSocket+Private.h
  54. 0 1
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSocket.h
  55. 1 0
      KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteWindowDocsEventOptions.h
  56. 0 1
      KulexiuForTeacher/Pods/Headers/Private/YYModel/NSObject+YYModel.h
  57. 0 1
      KulexiuForTeacher/Pods/Headers/Private/YYModel/YYClassInfo.h
  58. 0 1
      KulexiuForTeacher/Pods/Headers/Private/YYModel/YYModel.h
  59. 1 0
      KulexiuForTeacher/Pods/Headers/Public/RSKImageCropper/RSKImageScrollViewDelegate.h
  60. 1 0
      KulexiuForTeacher/Pods/Headers/Public/White_YYModel/NSObject+White_YYModel.h
  61. 1 0
      KulexiuForTeacher/Pods/Headers/Public/White_YYModel/White_YYClassInfo.h
  62. 1 0
      KulexiuForTeacher/Pods/Headers/Public/White_YYModel/White_YYModel.h
  63. 0 1
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/NSObject+YY.h
  64. 1 0
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteAppSyncAttributes.h
  65. 1 0
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteAudioEffectMixerBridge.h
  66. 1 0
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteProjectorStaticImageInfo.h
  67. 1 0
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteSlideAppParams.h
  68. 1 0
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteSlideDelegate.h
  69. 0 1
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteSocket.h
  70. 1 0
      KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteWindowDocsEventOptions.h
  71. 0 1
      KulexiuForTeacher/Pods/Headers/Public/YYModel/NSObject+YYModel.h
  72. 0 1
      KulexiuForTeacher/Pods/Headers/Public/YYModel/YYClassInfo.h
  73. 0 1
      KulexiuForTeacher/Pods/Headers/Public/YYModel/YYModel.h
  74. 29 45
      KulexiuForTeacher/Pods/Manifest.lock
  75. 1 1
      KulexiuForTeacher/Pods/NTLBridge/dsbridge/DWKWebView.h
  76. 4544 4524
      KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj
  77. 3 3
      KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  78. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/LICENSE
  79. 12 8
      KulexiuForTeacher/Pods/RSKImageCropper/README.md
  80. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/CGGeometry+RSKImageCropper.h
  81. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/CGGeometry+RSKImageCropper.m
  82. 3 7
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController+Protected.h
  83. 37 24
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.h
  84. 120 58
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.m
  85. 2 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropper.h
  86. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/ar.lproj/RSKImageCropper.strings
  87. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/bg.lproj/RSKImageCropper.strings
  88. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/bs.lproj/RSKImageCropper.strings
  89. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/ca.lproj/RSKImageCropper.strings
  90. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/cs.lproj/RSKImageCropper.strings
  91. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/da.lproj/RSKImageCropper.strings
  92. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/de.lproj/RSKImageCropper.strings
  93. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/el.lproj/RSKImageCropper.strings
  94. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/en.lproj/RSKImageCropper.strings
  95. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/es.lproj/RSKImageCropper.strings
  96. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/et.lproj/RSKImageCropper.strings
  97. 30 0
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fa.lproj/RSKImageCropper.strings
  98. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fi.lproj/RSKImageCropper.strings
  99. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fil.lproj/RSKImageCropper.strings
  100. 1 1
      KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fr.lproj/RSKImageCropper.strings

+ 0 - 4
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -8940,7 +8940,6 @@
 					"-l\"TYCyclePagerView\"",
 					"-l\"TZImagePickerController\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",
@@ -9117,7 +9116,6 @@
 					"-l\"TYCyclePagerView\"",
 					"-l\"TZImagePickerController\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",
@@ -9422,7 +9420,6 @@
 					"-l\"TYCyclePagerView\"",
 					"-l\"TZImagePickerController\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",
@@ -9694,7 +9691,6 @@
 					"-l\"TYCyclePagerView\"",
 					"-l\"TZImagePickerController\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",

+ 10 - 10
KulexiuForTeacher/Podfile

@@ -38,16 +38,16 @@ install! 'cocoapods', :disable_input_output_paths => true
   pod 'AlipaySDK-iOS'
   
   # 集成聊天功能
-    pod 'TUIChat/UI_Classic'
-    # 集成会话功能
-    pod 'TUIConversation/UI_Classic'
-    # 集成群组功能
-    pod 'TUIGroup/UI_Classic'
-    # 集成搜索功能(需要购买旗舰版套餐)
-    pod 'TUISearch/UI_Classic'
-
-    # 接入腾讯直播
-    pod 'TXLiteAVSDK_Professional'
+  pod 'TUIChat/UI_Classic', '7.4.4643'
+  # 集成会话功能
+  pod 'TUIConversation/UI_Classic', '7.4.4643'
+  # 集成群组功能
+  pod 'TUIGroup/UI_Classic', '7.4.4643'
+  # 集成搜索功能(需要购买旗舰版套餐)
+  pod 'TUISearch/UI_Classic', '7.4.4643'
+  
+  # 接入腾讯直播
+  pod 'TXLiteAVSDK_Professional', '11.7.15304'
 
     
     pod 'CocoaHTTPServer'

+ 29 - 45
KulexiuForTeacher/Podfile.lock

@@ -14,8 +14,8 @@ PODS:
   - AFNetworking/Serialization (4.0.1)
   - AFNetworking/UIKit (4.0.1):
     - AFNetworking/NSURLSession
-  - AlipaySDK-iOS (15.8.8)
-  - Bugly (2.5.91)
+  - AlipaySDK-iOS (15.8.16)
+  - Bugly (2.6.1)
   - CocoaAsyncSocket (7.6.5)
   - CocoaHTTPServer (2.4):
     - CocoaAsyncSocket
@@ -51,13 +51,13 @@ PODS:
   - MBProgressHUD (1.2.0)
   - MJExtension (3.3.0)
   - MJRefresh (3.1.17)
-  - NTLBridge (3.1.4)
+  - NTLBridge (3.1.6)
   - QCloudCore/WithoutMTA (6.4.4)
   - QCloudCOSXML/Transfer (6.4.4):
     - QCloudCore/WithoutMTA (= 6.4.4)
   - Reachability (3.7.6)
   - ReactiveObjC (3.1.1)
-  - RSKImageCropper (3.0.2)
+  - RSKImageCropper (4.1.1)
   - SDWebImage (5.16.0):
     - SDWebImage/Core (= 5.16.0)
   - SDWebImage/Core (5.16.0)
@@ -247,35 +247,19 @@ PODS:
     - TXLiteAVSDK_Professional/Professional (= 11.7.15304)
   - TXLiteAVSDK_Professional/Professional (11.7.15304)
   - TYCyclePagerView (1.2.0)
-  - TZImagePickerController (3.8.7):
-    - TZImagePickerController/Basic (= 3.8.7)
-    - TZImagePickerController/Location (= 3.8.7)
-  - TZImagePickerController/Basic (3.8.7)
-  - TZImagePickerController/Location (3.8.7)
-  - Whiteboard (2.16.39):
-    - Whiteboard/Whiteboard-YYModel (= 2.16.39)
-  - Whiteboard/Base (2.16.39):
+  - TZImagePickerController (3.8.8):
+    - TZImagePickerController/Basic (= 3.8.8)
+    - TZImagePickerController/Location (= 3.8.8)
+  - TZImagePickerController/Basic (3.8.8)
+  - TZImagePickerController/Location (3.8.8)
+  - White_YYModel (1.0.6)
+  - Whiteboard (2.16.106):
+    - Whiteboard/Whiteboard-Basic (= 2.16.106)
+  - Whiteboard/Resource (2.16.106)
+  - Whiteboard/Whiteboard-Basic (2.16.106):
     - NTLBridge (~> 3.1.4)
-    - Whiteboard/Object
-  - Whiteboard/Converter (2.16.39):
-    - Whiteboard/Object
-  - Whiteboard/Model (2.16.39):
-    - YYModel
-  - Whiteboard/NativeReplayer (2.16.39):
-    - Whiteboard/Replayer
-  - Whiteboard/Object (2.16.39):
-    - Whiteboard/Model
-  - Whiteboard/Replayer (2.16.39):
-    - Whiteboard/Base
-  - Whiteboard/Resource (2.16.39)
-  - Whiteboard/Room (2.16.39):
-    - Whiteboard/Base
-  - Whiteboard/Whiteboard-YYModel (2.16.39):
-    - Whiteboard/Converter
-    - Whiteboard/NativeReplayer
+    - White_YYModel
     - Whiteboard/Resource
-    - Whiteboard/Room
-  - YYModel (1.0.4)
 
 DEPENDENCIES:
   - AlipaySDK-iOS
@@ -287,11 +271,11 @@ DEPENDENCIES:
   - KSToolsLibrary (from `/Users/wangzhi/WorkSpace/TargetModule/my-local-repo/KSToolsLibrary`)
   - RSKImageCropper
   - SSZipArchive
-  - TUIChat/UI_Classic
-  - TUIConversation/UI_Classic
-  - TUIGroup/UI_Classic
-  - TUISearch/UI_Classic
-  - TXLiteAVSDK_Professional
+  - TUIChat/UI_Classic (= 7.4.4643)
+  - TUIConversation/UI_Classic (= 7.4.4643)
+  - TUIGroup/UI_Classic (= 7.4.4643)
+  - TUISearch/UI_Classic (= 7.4.4643)
+  - TXLiteAVSDK_Professional (= 11.7.15304)
   - TYCyclePagerView
   - Whiteboard
 
@@ -332,8 +316,8 @@ SPEC REPOS:
     - TXLiteAVSDK_Professional
     - TYCyclePagerView
     - TZImagePickerController
+    - White_YYModel
     - Whiteboard
-    - YYModel
 
 EXTERNAL SOURCES:
   KSCloudAccompanyLibrary:
@@ -343,8 +327,8 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
-  AlipaySDK-iOS: 9289d94792535cd14c5c241c720a7e981edd7035
-  Bugly: afe841bba2ea6de6d432a3c125240a5e75949c55
+  AlipaySDK-iOS: 5e6011fbd546e7db6b43c1f527d164ee63f3d7cb
+  Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   CocoaHTTPServer: 71538be9be526cf950cb4d9c9465153ea45cac99
   CocoaLumberjack: 6a459bc897d6d80bd1b8c78482ec7ad05dffc3f0
@@ -360,12 +344,12 @@ SPEC CHECKSUMS:
   MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
   MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
   MJRefresh: ee5b68f639775462faba4db0fd243baf4d42c2cf
-  NTLBridge: 49780dc966976d3221a0eb03c7368617c1987cb6
+  NTLBridge: 6ef7f3c1fc956f2e2d701a89828d51674bd479c7
   QCloudCore: 9b13ad49cf5fc4537f416811f31c41cf46d8f3c2
   QCloudCOSXML: b24d8a1225e4b3270d36bbcfa66478fedc1c6de6
   Reachability: fd0ecd23705e2599e4cceeb943222ae02296cbc6
   ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
-  RSKImageCropper: 1ac71e9a82e3f41eea3eedfff8eacb0d3821c9ec
+  RSKImageCropper: 5f1100a1e2088c349562c8dd06c632bfc2ea56a7
   SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
   SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
@@ -378,10 +362,10 @@ SPEC CHECKSUMS:
   TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
   TXLiteAVSDK_Professional: 60add29dbe52bed7d828f1d68d88487d9f16e9d1
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
-  TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124
-  Whiteboard: 4622f3866b7c35a9c757955619ba0a2b26d968f5
-  YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
+  TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
+  White_YYModel: 4ed7b231471784ec709d4db954e1ca61a4fbe54d
+  Whiteboard: 4967adb3b76ef6288c64aadf9cfa8be70392035f
 
-PODFILE CHECKSUM: 3cb529b99cf570c0aa5ede6f020fc001883aba96
+PODFILE CHECKSUM: cd01dd3488bbf4b7945c46d288eba0fe43599628
 
 COCOAPODS: 1.15.2

BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/AlipaySDK


+ 40 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/Info.plist

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>AvailableLibraries</key>
+	<array>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>ios-arm64</string>
+			<key>LibraryPath</key>
+			<string>AlipaySDK.framework</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+			</array>
+			<key>SupportedPlatform</key>
+			<string>ios</string>
+		</dict>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>ios-arm64_x86_64-simulator</string>
+			<key>LibraryPath</key>
+			<string>AlipaySDK.framework</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+				<string>x86_64</string>
+			</array>
+			<key>SupportedPlatform</key>
+			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
+		</dict>
+	</array>
+	<key>CFBundlePackageType</key>
+	<string>XFWK</string>
+	<key>XCFrameworkFormatVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>

BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK


+ 0 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/AlipaySDK-inside-Info.plist → KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK-inside-Info.plist


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png


+ 1 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bridge.js

@@ -0,0 +1 @@
+!function(){if(!window.AlipayJSBridge){window.alipayjsbridgeSetTitle=function(e){document.title=e,t("alipayjsbridge://setTitle?title="+encodeURIComponent(e))},window.alipayjsbridgeRefresh=function(){t("alipayjsbridge://onRefresh?")},window.alipayjsbridgeBack=function(){t("alipayjsbridge://onBack?")},window.alipayjsbridgeExit=function(e){t("alipayjsbridge://onExit?bsucc="+e)},window.alipayjsbridgeShowBackButton=function(e){t("alipayjsbridge://showBackButton?bshow="+e)},window.AlipayJSBridge={version:"2.0",addListener:function(e,i){a[e]=i},hasListener:function(e){if(!a[e])return!1;return!0},callListener:function(e,i,n){var t;n&&(t=function(e){var i="";e&&(i=encodeURIComponent(JSON.stringify(e)));var a="func=h5JsFuncCallback&cbId="+n+"&data="+i;o(a)});var r=a[e];r?r(i,t):console.log("AlipayJSBridge: no h5JsFunc ",e+i)},callNativeFunc:function(e,a,t){var r="";t&&(r="cb_"+i+++"_"+(new Date).getTime(),n[r]=t);var d="";a&&(d=encodeURIComponent(JSON.stringify(a)));o("func="+e+"&cbId="+r+"&data="+d)},callBackFromNativeFunc:function(e,i){var a=n[e];a&&(a(i),delete n[i])}};var e,i=1,n={},a={};window.CustomEvent?e=new CustomEvent("alipayjsbridgeready"):(e=document.createEvent("Event")).initEvent("alipayjsbridgeready",!0,!0),document.dispatchEvent(e),setTimeout(function(){if(window.AlipayJSBridgeInitArray){var e=window.AlipayJSBridgeInitArray;delete window.AlipayJSBridgeInitArray;for(var i=0;i<e.length;i++)try{e[i](AlipayJSBridge)}catch(e){setTimeout(function(){throw e})}}},0)}function t(e){window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.MQPJSBridgeScheme&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage(e)}function o(e){t("alipayjsbridge://callNativeFunc?"+e)}}();

BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png


+ 0 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/AFServiceCenter.h → KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceCenter.h


+ 0 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/AFServiceResponse.h → KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceResponse.h


+ 0 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/APayAuthInfo.h → KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/APayAuthInfo.h


+ 28 - 5
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/AlipaySDK.h → KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AlipaySDK.h

@@ -9,7 +9,7 @@
 
 ////////////////////////////////////////////////////////
 ///////////////// 支付宝标准版本支付SDK ///////////////////
-///////// version:15.8.08  motify:2022.02.15///////////
+///////// version:15.8.16  modify:2023.08.02///////////
 ////////////////////////////////////////////////////////
 
 #import <UIKit/UIKit.h>
@@ -52,10 +52,9 @@ typedef enum {
 /**
  *  支付接口
  *
- *  @param orderStr        支付订单信息字串
- *  @param schemeStr       调用支付的app注册在info.plist中的scheme
- *  @param completionBlock 支付结果回调Block,用于wap支付结果回调
-                           跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ *  @param orderStr                支付订单信息字串
+ *  @param schemeStr              调用支付的app注册在info.plist中的scheme
+ *  @param completionBlock 支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
  */
 - (void)payOrder:(NSString *)orderStr
       fromScheme:(NSString *)schemeStr
@@ -84,6 +83,30 @@ typedef enum {
 - (void)processOrderWithPaymentResult:(NSURL *)resultUrl
                       standbyCallback:(CompletionBlock)completionBlock;
 
+
+/**
+ *  商户接入UniversalLink支付接口使用该接口
+ *
+ *  @param orderStr                  支付订单信息字串
+ *  @param schemeStr                调用支付的app注册在info.plist中的scheme
+ *  @param universalLink       调用支付的app关联的universalLink,如'https://render.alipay.com/'
+ *  @param completionBlock   支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void) payOrder:(NSString *)orderStr
+       fromScheme:(NSString *)schemeStr
+fromUniversalLink:(NSString *)universalLink
+         callback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  处理支付宝app支付后通过universalLink跳回商户app携带的支付结果处理
+ *
+ *  @param userActivity            系统接口传入的userActivity
+ *  @param completionBlock     支付结果回调 为nil时默认使用支付接口的completionBlock
+ */
+- (void)handleOpenUniversalLink:(NSUserActivity *)userActivity standbyCallback:(CompletionBlock)completionBlock;
+
+
 /**
  *  获取交易token。
  *

BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK-inside-Info.plist


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png


+ 1 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bridge.js

@@ -0,0 +1 @@
+!function(){if(!window.AlipayJSBridge){window.alipayjsbridgeSetTitle=function(e){document.title=e,t("alipayjsbridge://setTitle?title="+encodeURIComponent(e))},window.alipayjsbridgeRefresh=function(){t("alipayjsbridge://onRefresh?")},window.alipayjsbridgeBack=function(){t("alipayjsbridge://onBack?")},window.alipayjsbridgeExit=function(e){t("alipayjsbridge://onExit?bsucc="+e)},window.alipayjsbridgeShowBackButton=function(e){t("alipayjsbridge://showBackButton?bshow="+e)},window.AlipayJSBridge={version:"2.0",addListener:function(e,i){a[e]=i},hasListener:function(e){if(!a[e])return!1;return!0},callListener:function(e,i,n){var t;n&&(t=function(e){var i="";e&&(i=encodeURIComponent(JSON.stringify(e)));var a="func=h5JsFuncCallback&cbId="+n+"&data="+i;o(a)});var r=a[e];r?r(i,t):console.log("AlipayJSBridge: no h5JsFunc ",e+i)},callNativeFunc:function(e,a,t){var r="";t&&(r="cb_"+i+++"_"+(new Date).getTime(),n[r]=t);var d="";a&&(d=encodeURIComponent(JSON.stringify(a)));o("func="+e+"&cbId="+r+"&data="+d)},callBackFromNativeFunc:function(e,i){var a=n[e];a&&(a(i),delete n[i])}};var e,i=1,n={},a={};window.CustomEvent?e=new CustomEvent("alipayjsbridgeready"):(e=document.createEvent("Event")).initEvent("alipayjsbridgeready",!0,!0),document.dispatchEvent(e),setTimeout(function(){if(window.AlipayJSBridgeInitArray){var e=window.AlipayJSBridgeInitArray;delete window.AlipayJSBridgeInitArray;for(var i=0;i<e.length;i++)try{e[i](AlipayJSBridge)}catch(e){setTimeout(function(){throw e})}}},0)}function t(e){window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.MQPJSBridgeScheme&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage(e)}function o(e){t("alipayjsbridge://callNativeFunc?"+e)}}();

BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png


+ 56 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceCenter.h

@@ -0,0 +1,56 @@
+//
+//  AFServiceCenter.h
+//  AFServiceSDK
+//
+//  Created by jiajunchen on 02/01/2018.
+//  Copyright © 2018 antfin. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class AFServiceResponse;
+
+/**
+ SDK支持的业务枚举值
+
+ - AFServiceEInvoice: 电子发票
+ - AFServiceAuth: 账户授权
+ */
+typedef NS_ENUM(NSUInteger, AFService) {
+    AFServiceEInvoice,
+    AFServiceAuth,
+    AFServiceDeduct
+};
+
+
+extern NSString * const kAFServiceOptionBizParams;      // 钱包服务调用入参
+extern NSString * const kAFServiceOptionCallbackScheme; // 业务回跳当前app的scheme
+extern NSString * const kAFServiceOptionNotUseLanding;  // 不使用支付宝提示下载页做补偿,为true时需要商户自己处理用户未安装支付宝的情况
+extern NSString * const kAFServiceBizParamsKeyUrl;      // 独立签约入参url
+
+typedef void(^AFServiceResultBlock)(AFServiceResponse *response);
+
+@interface AFServiceCenter : NSObject
+
+/**
+ 调用钱包服务
+
+ @param service 业务service, 见AFService枚举值
+ @param params  参数Dictionary, key值详情参见kAFServiceOptionBizParams、kAFServiceOptionCallbackScheme注释
+ @param block   业务结果回调的block, block参数是AFServiceResponse类型,业务结果通过result属性获取,如果未用户未安装支付宝并且kAFServiceOptionNotUseLanding未设置为true,会使用H5landing页做补偿,这种情况下不会有block回调结果。
+ */
++ (void)callService:(AFService)service
+         withParams:(NSDictionary *)params
+      andCompletion:(AFServiceResultBlock)block;
+
+
+/**
+ 处理钱包服务回跳APP的URL
+
+ @param url 回跳URL
+ @param block 业务结果回掉的block,详情见调用接口入参上的block。注意此接口上的block只有在跳转钱包后,当前APP被系统回收的情况下回跳才生效
+ */
++ (void)handleResponseURL:(NSURL *)url
+           withCompletion:(AFServiceResultBlock)block;
+
+@end

+ 43 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceResponse.h

@@ -0,0 +1,43 @@
+//
+//  AFServiceResponse.h
+//  AFServiceSDK
+//
+//  Created by jiajunchen on 08/01/2018.
+//  Copyright © 2018 antfin. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/**
+ 钱包服务调用结果状态吗
+
+ - AFResSuccess: 默认值,业务调用成功,结果数据参见result字段
+ - AFResInvalidService: service枚举值错误
+ - AFResInvalidURL: 钱包回跳URL错误
+ - AFResRepeatCall: 业务重复调用(3s内)
+ - AFResOpenURLErr: 跳转失败
+ */
+typedef NS_ENUM(NSUInteger, AFResCode) {
+    AFResSuccess = 0,
+    AFResInvalidService = 100,
+    AFResInvalidURL,
+    AFResRepeatCall,
+    AFResOpenURLErr,
+};
+
+
+@interface AFServiceResponse : NSObject
+
+
+/**
+ 业务调用状态吗
+ */
+@property (nonatomic, assign) AFResCode responseCode;
+
+
+/**
+ 业务结果Dictionary, 内容请参考具体业务方接入文档
+ */
+@property (readonly) NSDictionary *result;
+
+@end

+ 33 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/APayAuthInfo.h

@@ -0,0 +1,33 @@
+//
+//  APAuthInfo.h
+//  APAuth
+//
+//  Created by antfin on 17-10-24.
+//  Copyright (c) 2017年 AntFin. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface APayAuthInfo : NSObject
+
+@property(nonatomic, copy)NSString *appID;
+@property(nonatomic, copy)NSString *pid;
+@property(nonatomic, copy)NSString *redirectUri;
+
+/**
+ *  初始化AuthInfo
+ *
+ *  @param appIDStr     应用ID
+ *  @param pidStr       商户ID   可不填
+ *  @param uriStr       授权的应用回调地址  比如:alidemo://auth
+ *
+ *  @return authinfo实例
+ */
+- (id)initWithAppID:(NSString *)appIDStr
+                pid:(NSString *)pidStr
+        redirectUri:(NSString *)uriStr;
+
+- (NSString *)description;
+- (NSString *)wapDescription;
+
+@end

+ 246 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AlipaySDK.h

@@ -0,0 +1,246 @@
+//
+//  AlipaySDK.h
+//  AlipaySDK
+//
+//  Created by antfin on 17-10-24.
+//  Copyright (c) 2017年 AntFin. All rights reserved.
+//
+
+
+////////////////////////////////////////////////////////
+///////////////// 支付宝标准版本支付SDK ///////////////////
+///////// version:15.8.16  modify:2023.08.02///////////
+////////////////////////////////////////////////////////
+
+#import <UIKit/UIKit.h>
+#import "APayAuthInfo.h"
+#import "AFServiceCenter.h"
+#import "AFServiceResponse.h"
+
+typedef void(^CompletionBlock)(NSDictionary *resultDic);
+
+typedef enum {
+    ALIPAY_TIDFACTOR_IMEI,
+    ALIPAY_TIDFACTOR_IMSI,
+    ALIPAY_TIDFACTOR_TID,
+    ALIPAY_TIDFACTOR_CLIENTKEY,
+    ALIPAY_TIDFACTOR_VIMEI,
+    ALIPAY_TIDFACTOR_VIMSI,
+    ALIPAY_TIDFACTOR_CLIENTID,
+    ALIPAY_TIDFACTOR_APDID,
+    ALIPAY_TIDFACTOR_MAX
+} AlipayTidFactor;
+
+@interface AlipaySDK : NSObject
+
+/**
+ *  创建支付单例服务
+ *
+ *  @return 返回单例对象
+ */
++ (AlipaySDK *)defaultService;
+
+/**
+ *  用于设置SDK使用的window,如果没有自行创建window无需设置此接口
+ */
+@property (nonatomic, weak) UIWindow *targetWindow;
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝支付相关接口/////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  支付接口
+ *
+ *  @param orderStr                支付订单信息字串
+ *  @param schemeStr              调用支付的app注册在info.plist中的scheme
+ *  @param completionBlock 支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void)payOrder:(NSString *)orderStr
+      fromScheme:(NSString *)schemeStr
+        callback:(CompletionBlock)completionBlock;
+
+/**
+ *  支付接口 v2
+ *
+ *  @param orderStr        支付订单信息字串
+ *  @param dynamicLaunch   是否使用动态配置策略跳转支付宝支付
+ *  @param schemeStr       调用支付的app注册在info.plist中的scheme
+ *  @param completionBlock 支付结果回调Block,用于wap支付结果回调
+ 跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void)payOrder:(NSString *)orderStr
+   dynamicLaunch:(BOOL)dynamicLaunch
+      fromScheme:(NSString *)schemeStr
+        callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理支付宝app支付后跳回商户app携带的支付结果Url
+ *
+ *  @param resultUrl        支付宝app返回的支付结果url
+ *  @param completionBlock  支付结果回调 为nil时默认使用支付接口的completionBlock
+ */
+- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
+                      standbyCallback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  商户接入UniversalLink支付接口使用该接口
+ *
+ *  @param orderStr                  支付订单信息字串
+ *  @param schemeStr                调用支付的app注册在info.plist中的scheme
+ *  @param universalLink       调用支付的app关联的universalLink,如'https://render.alipay.com/'
+ *  @param completionBlock   支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void) payOrder:(NSString *)orderStr
+       fromScheme:(NSString *)schemeStr
+fromUniversalLink:(NSString *)universalLink
+         callback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  处理支付宝app支付后通过universalLink跳回商户app携带的支付结果处理
+ *
+ *  @param userActivity            系统接口传入的userActivity
+ *  @param completionBlock     支付结果回调 为nil时默认使用支付接口的completionBlock
+ */
+- (void)handleOpenUniversalLink:(NSUserActivity *)userActivity standbyCallback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  获取交易token。
+ *
+ *  @return 交易token,若无则为空。
+ */
+- (NSString *)fetchTradeToken;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝授权 2.0 相关接口////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  快登授权2.0
+ *
+ *  @param infoStr          授权请求信息字串
+ *  @param schemeStr        调用授权的app注册在info.plist中的scheme
+ *  @param completionBlock  授权结果回调,需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ *                          若在授权过程中,调用方应用被系统终止则此block无效(此时会调用'processAuth_V2Result:standbyCallback:'传入的standbyCallback)
+ */
+- (void)auth_V2WithInfo:(NSString *)infoStr
+             fromScheme:(NSString *)schemeStr
+               callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理支付宝app授权后跳回商户app携带的授权结果Url
+ *
+ *  @param resultUrl        支付宝app返回的授权结果url
+ *  @param completionBlock  授权结果回调,用于处理跳转支付宝授权过程中商户APP被系统终止的情况
+ */
+- (void)processAuth_V2Result:(NSURL *)resultUrl
+             standbyCallback:(CompletionBlock)completionBlock;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝授权 1.0 相关接口////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/**
+ *  快登授权
+ *  @param authInfo         授权相关信息
+ *  @param completionBlock  授权结果回调,若在授权过程中,调用方应用被系统终止,则此block无效,
+                            需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ */
+- (void)authWithInfo:(APayAuthInfo *)authInfo
+            callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理支付宝app授权后跳回商户app携带的授权结果Url
+ *
+ *  @param resultUrl        支付宝app返回的授权结果url
+ *  @param completionBlock  授权结果回调
+ */
+- (void)processAuthResult:(NSURL *)resultUrl
+          standbyCallback:(CompletionBlock)completionBlock;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝 h5 支付转 native 支付接口////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ *  从h5链接中获取订单串并支付接口(自版本15.4.0起,推荐使用该接口)
+ *
+ *  @param urlStr     拦截的 url string
+ *
+ *  @return YES为成功获取订单信息并发起支付流程;NO为无法获取订单信息,输入url是普通url
+ */
+- (BOOL)payInterceptorWithUrl:(NSString *)urlStr
+                   fromScheme:(NSString *)schemeStr
+                     callback:(CompletionBlock)completionBlock;
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝 tid 相关信息获取接口/////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  获取当前tid相关信息
+ *
+ *  @return tid相关信息
+ */
+- (NSString*)queryTidFactor:(AlipayTidFactor)factor;
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝支付环境相关信息接口//////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  是否已经使用过
+ *
+ *  @return YES为已经使用过,NO反之
+ */
+- (BOOL)isLogined;
+
+/**
+ *  获取当前版本号
+ *
+ *  @return 当前版本字符串
+ */
+- (NSString *)currentVersion;
+
+/**
+ *  測試所用,realse包无效
+ *
+ *  @param url  测试环境
+ */
+- (void)setUrl:(NSString *)url;
+
+/**
+ *  支付前主动更新本地配置
+ *
+ *  @param block 更新请求结果回调
+ */
+- (void)fetchSdkConfigWithBlock:(void(^)(BOOL success))block;
+
+
+typedef void(^APLogBlock)(NSString *log);
+
+/**
+*   接收AlipaySDK的log信息
+*
+*  @param logBlock 打印log的回调block
+*/
++ (void)startLogWithBlock:(APLogBlock)logBlock;
+
+/**
+*   停止输出log,会释放logBlock
+*
+*
+*/
++ (void)stopLog;
+
+@end

BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeDirectory


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements


BIN
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements-1


+ 319 - 0
KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeResources

@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>AlipaySDK-inside-Info.plist</key>
+		<data>
+		1eNodgoJjexIXNkgnNN0zvMoQWI=
+		</data>
+		<key>AlipaySDK.bundle/alipay_msp_back@2x.png</key>
+		<data>
+		9QmweA7IyncTPWZIOx5ECL2ne4o=
+		</data>
+		<key>AlipaySDK.bundle/alipay_msp_refresh@2x.png</key>
+		<data>
+		ivQn6LWpOB8BoUbNdxsIvfbJbuM=
+		</data>
+		<key>AlipaySDK.bundle/bar@2x.png</key>
+		<data>
+		ENmQmLXuSOxBy844XKkdTedcv2Y=
+		</data>
+		<key>AlipaySDK.bundle/bridge.js</key>
+		<data>
+		sgZ31kacqvJAHbN7Ywt45Mglc6o=
+		</data>
+		<key>AlipaySDK.bundle/refresh@2x.png</key>
+		<data>
+		MrXCB0ZUwnx4+zfw1X2jzlNdDc4=
+		</data>
+		<key>AlipaySDK.bundle/refresh_click@2x.png</key>
+		<data>
+		Q5O/60AWCbG5LfvVC3+guPjpeFs=
+		</data>
+		<key>AlipaySDK.bundle/shutdown@2x.png</key>
+		<data>
+		Z3Jf5aw1lVPaKemSw8qXPabBLcw=
+		</data>
+		<key>AlipaySDK.bundle/shutdown_click@2x.png</key>
+		<data>
+		v8pstv1HbmoW3gdlKZzSqn31WHY=
+		</data>
+		<key>Headers/AFServiceCenter.h</key>
+		<data>
+		AQaJpNuFjISlEnxg4oc++V6HKDs=
+		</data>
+		<key>Headers/AFServiceResponse.h</key>
+		<data>
+		kmXpMRX3EHJQ2GcKHGTF42sh5W0=
+		</data>
+		<key>Headers/APayAuthInfo.h</key>
+		<data>
+		gJOMjyPrvesSF0hKcHM3CVMNDJQ=
+		</data>
+		<key>Headers/AlipaySDK.h</key>
+		<data>
+		8XwC+MqQpDbmMpi+DX1Rqs4rmm4=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		8zhFy4JJEZW3WMNlkPg+bXYE9Gc=
+		</data>
+		<key>en.lproj/InfoPlist.strings</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zmV6UqBSo6r1NOz798vd5O4zTBA=
+			</data>
+			<key>optional</key>
+			<true/>
+		</dict>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>AlipaySDK-inside-Info.plist</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			1eNodgoJjexIXNkgnNN0zvMoQWI=
+			</data>
+			<key>hash2</key>
+			<data>
+			BrDPBL2W2wSe1mgUv7agJTpxXb/lKF3XOJfP0w2hoNc=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/alipay_msp_back@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			9QmweA7IyncTPWZIOx5ECL2ne4o=
+			</data>
+			<key>hash2</key>
+			<data>
+			pqv6sMiIl+QnblEyN3FQCDRwbxFEJpY5Roe80rSkaA4=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/alipay_msp_refresh@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ivQn6LWpOB8BoUbNdxsIvfbJbuM=
+			</data>
+			<key>hash2</key>
+			<data>
+			eSIZGIUsqcDz03r9ISTu2jNwTz0msn0tSSEOTq8KYz0=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/bar@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ENmQmLXuSOxBy844XKkdTedcv2Y=
+			</data>
+			<key>hash2</key>
+			<data>
+			38AV6Lw9+K+g+t7MHjtEKIJarVILLcTXm0o58ki9C3Q=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/bridge.js</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			sgZ31kacqvJAHbN7Ywt45Mglc6o=
+			</data>
+			<key>hash2</key>
+			<data>
+			5Sf9BPwyQ3bHoIdJYsGubF6CsgDuqngeWVkh3Ggm5Rc=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/refresh@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			MrXCB0ZUwnx4+zfw1X2jzlNdDc4=
+			</data>
+			<key>hash2</key>
+			<data>
+			mR8Iqbh2To/+bYNWFk0IbpoorNfzg31HgUB8v89EphQ=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/refresh_click@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Q5O/60AWCbG5LfvVC3+guPjpeFs=
+			</data>
+			<key>hash2</key>
+			<data>
+			qkSv6KIv4z3l+TmK/G5Gms3oYZripYuLCK2rB2rmyhY=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/shutdown@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Z3Jf5aw1lVPaKemSw8qXPabBLcw=
+			</data>
+			<key>hash2</key>
+			<data>
+			mWjeqq55Ym3S0vhMp13qIXpvbIkaeheRy9CnDbpcqhQ=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/shutdown_click@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			v8pstv1HbmoW3gdlKZzSqn31WHY=
+			</data>
+			<key>hash2</key>
+			<data>
+			dE2ndHqk8MuNrgTt2yHONxfP38nq2HUgB4t2jKRl8SI=
+			</data>
+		</dict>
+		<key>Headers/AFServiceCenter.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			AQaJpNuFjISlEnxg4oc++V6HKDs=
+			</data>
+			<key>hash2</key>
+			<data>
+			6LTn9ui9fej1+gAIMRA0A8tYete1h+5FyCKvdDubNTY=
+			</data>
+		</dict>
+		<key>Headers/AFServiceResponse.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			kmXpMRX3EHJQ2GcKHGTF42sh5W0=
+			</data>
+			<key>hash2</key>
+			<data>
+			Asp+7KYSwYGi9WCHRSYYiTb3SBRlkdfI0FVEIYrI3gg=
+			</data>
+		</dict>
+		<key>Headers/APayAuthInfo.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			gJOMjyPrvesSF0hKcHM3CVMNDJQ=
+			</data>
+			<key>hash2</key>
+			<data>
+			YdDScCCH/DS/7WgISrrhBnFB06W7eY1H1UQNRFImM2w=
+			</data>
+		</dict>
+		<key>Headers/AlipaySDK.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			8XwC+MqQpDbmMpi+DX1Rqs4rmm4=
+			</data>
+			<key>hash2</key>
+			<data>
+			JzobtSIFkFOPENnZPYwM6VyyesCbgdsUTeeQZV4+ZXY=
+			</data>
+		</dict>
+		<key>en.lproj/InfoPlist.strings</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zmV6UqBSo6r1NOz798vd5O4zTBA=
+			</data>
+			<key>hash2</key>
+			<data>
+			kmHsztpgjvF0JW5f3HdMHm49z1M0CcG8OT1JDQHHE/E=
+			</data>
+			<key>optional</key>
+			<true/>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>

+ 0 - 0
KulexiuForTeacher/Pods/Whiteboard/Whiteboard/Resource/e20587c → KulexiuForTeacher/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeSignature


+ 1 - 1
KulexiuForTeacher/Pods/AlipaySDK-iOS/LICENSE

@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2018 Antfin
+Copyright (c) 2023 Antfin
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

BIN
KulexiuForTeacher/Pods/Bugly/Bugly.framework/Bugly


+ 1 - 1
KulexiuForTeacher/Pods/Bugly/Bugly.framework/Headers/Bugly.h

@@ -1,7 +1,7 @@
 //
 //  Bugly.h
 //
-//  Version: 2.5(91)
+//  Version: 2.6(1)
 //
 //  Copyright (c) 2017年 Tencent. All rights reserved.
 //

+ 41 - 0
KulexiuForTeacher/Pods/Bugly/Bugly.framework/PrivacyInfo.xcprivacy

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>NSPrivacyAccessedAPITypes</key>
+	<array>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>C617.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>35F9.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>E174.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>CA92.1</string>
+			</array>
+		</dict>
+	</array>
+</dict>
+</plist>

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/RSKImageCropper/RSKImageScrollViewDelegate.h

@@ -0,0 +1 @@
+../../../RSKImageCropper/RSKImageCropper/RSKImageScrollViewDelegate.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/White_YYModel/NSObject+White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/NSObject+White_YYModel.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/White_YYModel/White_YYClassInfo.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYClassInfo.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/White_YYModel/White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYModel.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/NSObject+YY.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Model/NSObject+YY.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteAppSyncAttributes.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Object/WhiteAppSyncAttributes.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteAudioEffectMixerBridge.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Displayer/WhiteAudioEffectMixerBridge.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteProjectorStaticImageInfo.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Converter/Projector/WhiteProjectorStaticImageInfo.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSlideAppParams.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/SDK/WhiteSlideAppParams.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSlideDelegate.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/SDK/WhiteSlideDelegate.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSocket+Private.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Room/WhiteSocket+Private.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteSocket.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Room/WhiteSocket.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Private/Whiteboard/WhiteWindowDocsEventOptions.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Room/WhiteWindowDocsEventOptions.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Private/YYModel/NSObject+YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/NSObject+YYModel.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Private/YYModel/YYClassInfo.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYClassInfo.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Private/YYModel/YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYModel.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/RSKImageCropper/RSKImageScrollViewDelegate.h

@@ -0,0 +1 @@
+../../../RSKImageCropper/RSKImageCropper/RSKImageScrollViewDelegate.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/White_YYModel/NSObject+White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/NSObject+White_YYModel.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/White_YYModel/White_YYClassInfo.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYClassInfo.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/White_YYModel/White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYModel.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/NSObject+YY.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Model/NSObject+YY.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteAppSyncAttributes.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Object/WhiteAppSyncAttributes.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteAudioEffectMixerBridge.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Displayer/WhiteAudioEffectMixerBridge.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteProjectorStaticImageInfo.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Converter/Projector/WhiteProjectorStaticImageInfo.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteSlideAppParams.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/SDK/WhiteSlideAppParams.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteSlideDelegate.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/SDK/WhiteSlideDelegate.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteSocket.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Room/WhiteSocket.h

+ 1 - 0
KulexiuForTeacher/Pods/Headers/Public/Whiteboard/WhiteWindowDocsEventOptions.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Room/WhiteWindowDocsEventOptions.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Public/YYModel/NSObject+YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/NSObject+YYModel.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Public/YYModel/YYClassInfo.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYClassInfo.h

+ 0 - 1
KulexiuForTeacher/Pods/Headers/Public/YYModel/YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYModel.h

+ 29 - 45
KulexiuForTeacher/Pods/Manifest.lock

@@ -14,8 +14,8 @@ PODS:
   - AFNetworking/Serialization (4.0.1)
   - AFNetworking/UIKit (4.0.1):
     - AFNetworking/NSURLSession
-  - AlipaySDK-iOS (15.8.8)
-  - Bugly (2.5.91)
+  - AlipaySDK-iOS (15.8.16)
+  - Bugly (2.6.1)
   - CocoaAsyncSocket (7.6.5)
   - CocoaHTTPServer (2.4):
     - CocoaAsyncSocket
@@ -51,13 +51,13 @@ PODS:
   - MBProgressHUD (1.2.0)
   - MJExtension (3.3.0)
   - MJRefresh (3.1.17)
-  - NTLBridge (3.1.4)
+  - NTLBridge (3.1.6)
   - QCloudCore/WithoutMTA (6.4.4)
   - QCloudCOSXML/Transfer (6.4.4):
     - QCloudCore/WithoutMTA (= 6.4.4)
   - Reachability (3.7.6)
   - ReactiveObjC (3.1.1)
-  - RSKImageCropper (3.0.2)
+  - RSKImageCropper (4.1.1)
   - SDWebImage (5.16.0):
     - SDWebImage/Core (= 5.16.0)
   - SDWebImage/Core (5.16.0)
@@ -247,35 +247,19 @@ PODS:
     - TXLiteAVSDK_Professional/Professional (= 11.7.15304)
   - TXLiteAVSDK_Professional/Professional (11.7.15304)
   - TYCyclePagerView (1.2.0)
-  - TZImagePickerController (3.8.7):
-    - TZImagePickerController/Basic (= 3.8.7)
-    - TZImagePickerController/Location (= 3.8.7)
-  - TZImagePickerController/Basic (3.8.7)
-  - TZImagePickerController/Location (3.8.7)
-  - Whiteboard (2.16.39):
-    - Whiteboard/Whiteboard-YYModel (= 2.16.39)
-  - Whiteboard/Base (2.16.39):
+  - TZImagePickerController (3.8.8):
+    - TZImagePickerController/Basic (= 3.8.8)
+    - TZImagePickerController/Location (= 3.8.8)
+  - TZImagePickerController/Basic (3.8.8)
+  - TZImagePickerController/Location (3.8.8)
+  - White_YYModel (1.0.6)
+  - Whiteboard (2.16.106):
+    - Whiteboard/Whiteboard-Basic (= 2.16.106)
+  - Whiteboard/Resource (2.16.106)
+  - Whiteboard/Whiteboard-Basic (2.16.106):
     - NTLBridge (~> 3.1.4)
-    - Whiteboard/Object
-  - Whiteboard/Converter (2.16.39):
-    - Whiteboard/Object
-  - Whiteboard/Model (2.16.39):
-    - YYModel
-  - Whiteboard/NativeReplayer (2.16.39):
-    - Whiteboard/Replayer
-  - Whiteboard/Object (2.16.39):
-    - Whiteboard/Model
-  - Whiteboard/Replayer (2.16.39):
-    - Whiteboard/Base
-  - Whiteboard/Resource (2.16.39)
-  - Whiteboard/Room (2.16.39):
-    - Whiteboard/Base
-  - Whiteboard/Whiteboard-YYModel (2.16.39):
-    - Whiteboard/Converter
-    - Whiteboard/NativeReplayer
+    - White_YYModel
     - Whiteboard/Resource
-    - Whiteboard/Room
-  - YYModel (1.0.4)
 
 DEPENDENCIES:
   - AlipaySDK-iOS
@@ -287,11 +271,11 @@ DEPENDENCIES:
   - KSToolsLibrary (from `/Users/wangzhi/WorkSpace/TargetModule/my-local-repo/KSToolsLibrary`)
   - RSKImageCropper
   - SSZipArchive
-  - TUIChat/UI_Classic
-  - TUIConversation/UI_Classic
-  - TUIGroup/UI_Classic
-  - TUISearch/UI_Classic
-  - TXLiteAVSDK_Professional
+  - TUIChat/UI_Classic (= 7.4.4643)
+  - TUIConversation/UI_Classic (= 7.4.4643)
+  - TUIGroup/UI_Classic (= 7.4.4643)
+  - TUISearch/UI_Classic (= 7.4.4643)
+  - TXLiteAVSDK_Professional (= 11.7.15304)
   - TYCyclePagerView
   - Whiteboard
 
@@ -332,8 +316,8 @@ SPEC REPOS:
     - TXLiteAVSDK_Professional
     - TYCyclePagerView
     - TZImagePickerController
+    - White_YYModel
     - Whiteboard
-    - YYModel
 
 EXTERNAL SOURCES:
   KSCloudAccompanyLibrary:
@@ -343,8 +327,8 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
-  AlipaySDK-iOS: 9289d94792535cd14c5c241c720a7e981edd7035
-  Bugly: afe841bba2ea6de6d432a3c125240a5e75949c55
+  AlipaySDK-iOS: 5e6011fbd546e7db6b43c1f527d164ee63f3d7cb
+  Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   CocoaHTTPServer: 71538be9be526cf950cb4d9c9465153ea45cac99
   CocoaLumberjack: 6a459bc897d6d80bd1b8c78482ec7ad05dffc3f0
@@ -360,12 +344,12 @@ SPEC CHECKSUMS:
   MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
   MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
   MJRefresh: ee5b68f639775462faba4db0fd243baf4d42c2cf
-  NTLBridge: 49780dc966976d3221a0eb03c7368617c1987cb6
+  NTLBridge: 6ef7f3c1fc956f2e2d701a89828d51674bd479c7
   QCloudCore: 9b13ad49cf5fc4537f416811f31c41cf46d8f3c2
   QCloudCOSXML: b24d8a1225e4b3270d36bbcfa66478fedc1c6de6
   Reachability: fd0ecd23705e2599e4cceeb943222ae02296cbc6
   ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
-  RSKImageCropper: 1ac71e9a82e3f41eea3eedfff8eacb0d3821c9ec
+  RSKImageCropper: 5f1100a1e2088c349562c8dd06c632bfc2ea56a7
   SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
   SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
@@ -378,10 +362,10 @@ SPEC CHECKSUMS:
   TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
   TXLiteAVSDK_Professional: 60add29dbe52bed7d828f1d68d88487d9f16e9d1
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
-  TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124
-  Whiteboard: 4622f3866b7c35a9c757955619ba0a2b26d968f5
-  YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
+  TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
+  White_YYModel: 4ed7b231471784ec709d4db954e1ca61a4fbe54d
+  Whiteboard: 4967adb3b76ef6288c64aadf9cfa8be70392035f
 
-PODFILE CHECKSUM: 3cb529b99cf570c0aa5ede6f020fc001883aba96
+PODFILE CHECKSUM: cd01dd3488bbf4b7945c46d288eba0fe43599628
 
 COCOAPODS: 1.15.2

+ 1 - 1
KulexiuForTeacher/Pods/NTLBridge/dsbridge/DWKWebView.h

@@ -34,7 +34,7 @@ typedef void (^JSCallback)(NSString * _Nullable result,BOOL complete);
 - (void)addJavascriptObject:(id _Nullable ) object namespace:(NSString *  _Nullable)nativeNamespace;
 
 // Remove the Javascript Object with the supplied namespace
-- (void)removeJavascriptObject:(NSString *  _Nullable) namespace;
+- (void)removeJavascriptObject:(NSString *  _Nullable) nativeNamespace;
 
 // Test whether the handler exist in javascript
 - (void) hasJavascriptMethod:(NSString * _Nonnull) handlerName methodExistCallback:(void(^ _Nullable)(bool exist))callback;

File diff suppressed because it is too large
+ 4544 - 4524
KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj


+ 3 - 3
KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -214,17 +214,17 @@
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>Whiteboard-Whiteboard.xcscheme</key>
+		<key>White_YYModel.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>Whiteboard.xcscheme</key>
+		<key>Whiteboard-Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>YYModel.xcscheme</key>
+		<key>Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/LICENSE

@@ -1,4 +1,4 @@
-Copyright (c) 2014 Ruslan Skorb, http://lnkd.in/gsBbvb
+Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

+ 12 - 8
KulexiuForTeacher/Pods/RSKImageCropper/README.md

@@ -1,4 +1,4 @@
-## RSKImageCropper [![Build Status](https://travis-ci.org/ruslanskorb/RSKImageCropper.svg)](https://travis-ci.org/ruslanskorb/RSKImageCropper) [![Coverage Status](https://coveralls.io/repos/ruslanskorb/RSKImageCropper/badge.svg)](https://coveralls.io/r/ruslanskorb/RSKImageCropper) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/ruslanskorb/RSKImageCropper)
+## RSKImageCropper ![CI](https://github.com/ruslanskorb/RSKImageCropper/actions/workflows/main.yml/badge.svg) ![Swift Package Manager](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat) ![CocoaPods](https://img.shields.io/cocoapods/v/RSKImageCropper.svg?style=flat) ![Carthage](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)
 
 <p align="center">
 	<img src="Screenshot.png" alt="Sample">
@@ -7,7 +7,7 @@
 An image cropper for iOS like in the Contacts app with support for landscape orientation.
 
 ## Installation
-*RSKImageCropper requires iOS 9.0 or later.*
+*RSKImageCropper requires iOS 12.0 or later.*
 
 ### Using [Swift Package Manager](https://swift.org/package-manager/)
 
@@ -49,9 +49,9 @@ Just create a view controller for image cropping and set the delegate.
 - (IBAction)onButtonTouch:(UIButton *)sender
 {
     UIImage *image = [UIImage imageNamed:@"image"];
-    RSKImageCropViewController *imageCropVC = [[RSKImageCropViewController alloc] initWithImage:image];
-    imageCropVC.delegate = self;
-    [self.navigationController pushViewController:imageCropVC animated:YES];
+    RSKImageCropViewController *imageCropViewController = [[RSKImageCropViewController alloc] initWithImage:image];
+    imageCropViewController.delegate = self;
+    [self.navigationController pushViewController:imageCropViewController animated:YES];
 }
 ```
 
@@ -93,7 +93,7 @@ Then implement the delegate functions.
 
 ## DataSource
 
-`RSKImageCropViewControllerDataSource` provides three data source methods. The method `imageCropViewControllerCustomMaskRect:` asks the data source a custom rect for the mask. The method `imageCropViewControllerCustomMaskPath:` asks the data source a custom path for the mask. The method `imageCropViewControllerCustomMovementRect:` asks the data source a custom rect in which the image can be moved. To use them, implement the data source in your view controller.
+`RSKImageCropViewControllerDataSource` provides three data source methods. The method `imageCropViewControllerCustomMaskRect:` asks the data source for a custom rect for the mask. The method `imageCropViewControllerCustomMaskPath:` asks the data source for a custom path for the mask. The method `imageCropViewControllerCustomMovementRect:` asks the data source for a custom rect in which the image can be moved. To use them, implement the data source in your view controller.
 
 ```objective-c
 @interface ViewController () <RSKImageCropViewControllerDataSource>
@@ -181,13 +181,17 @@ Then implement the data source functions.
 
 ## Coming Soon
 
-- If you would like to request a new feature, feel free to raise as an issue.
+- If you would like to request a new feature, feel free to raise an issue.
 
 ## Demo
 
 Build and run the `RSKImageCropperExample` project in Xcode to see `RSKImageCropper` in action.
 Have fun. Fork and send pull requests. Figure out hooks for customization.
 
+## Privacy
+
+`RSKImageCropper` doesn't require a privacy manifest. According to [information received from Apple](https://developer.apple.com/forums/thread/746481?answerId=782256022#782256022), we should avoid adding an empty privacy manifest to our frameworks.
+
 ## Contact
 
 Ruslan Skorb
@@ -198,4 +202,4 @@ Ruslan Skorb
 
 ## License
 
-This project is is available under the MIT license. See the LICENSE file for more info. Attribution by linking to the [project page](https://github.com/ruslanskorb/RSKImageCropper) is appreciated.
+This project is available under the MIT license. See the LICENSE file for more info. Attribution by linking to the [project page](https://github.com/ruslanskorb/RSKImageCropper) is appreciated.

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/CGGeometry+RSKImageCropper.h

@@ -1,7 +1,7 @@
 //
 // CGGeometry+RSKImageCropper.h
 //
-// Copyright (c) 2015 Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2015 Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/CGGeometry+RSKImageCropper.m

@@ -1,7 +1,7 @@
 //
 // CGGeometry+RSKImageCropper.m
 //
-// Copyright (c) 2015 Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2015 Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 3 - 7
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController+Protected.h

@@ -1,7 +1,7 @@
 //
 // RSKImageCropViewController+Protected.h
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -24,15 +24,11 @@
 
 #import <UIKit/UIKit.h>
 #import <RSKImageCropper/RSKImageCropViewController.h>
+#import <RSKImageCropper/RSKImageScrollViewDelegate.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
-/**
- The methods in the RSKImageCropViewControllerProtectedMethods category
- typically should only be called by subclasses which are implementing new
- image crop view controllers. They may be overridden but must call super.
- */
-@interface RSKImageCropViewController (RSKImageCropViewControllerProtectedMethods)
+@interface RSKImageCropViewController (RSKImageCropViewControllerProtectedMethods) <RSKImageScrollViewDelegate>
 
 /**
  Asynchronously crops the original image in accordance with the current settings and tells the delegate that the original image will be / has been cropped.

+ 37 - 24
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.h

@@ -1,7 +1,7 @@
 //
 // RSKImageCropViewController.h
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -24,7 +24,7 @@
 
 #import <UIKit/UIKit.h>
 
-NS_ASSUME_NONNULL_BEGIN
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 @protocol RSKImageCropViewControllerDataSource;
 @protocol RSKImageCropViewControllerDelegate;
@@ -38,6 +38,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
     RSKImageCropModeCustom
 };
 
+NS_SWIFT_UI_ACTOR
 @interface RSKImageCropViewController : UIViewController
 
 /**
@@ -58,7 +59,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 /**
  Zooms to a specific area of the image so that it is visible.
  
- @param rect A rectangle defining an area of the image.
+ @param rect A rectangle defining an area of the image. The rectangle should be in the coordinate space of the image view controller's view.
  @param animated YES if the scrolling should be animated, NO if it should be immediate.
  */
 - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated;
@@ -174,6 +175,16 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 @property (assign, nonatomic) BOOL applyMaskToCroppedImage;
 
 /**
+ A Boolean value that controls whether the image bounces past the edge of the movement rect and back again. Default value is `YES`.
+ */
+@property (assign, nonatomic) BOOL bounces;
+
+/**
+ A Boolean value that determines whether the image scaling is animated when the scaling exceeds the maximum or minimum limits. Default value is `YES`.
+ */
+@property (assign, nonatomic) BOOL bouncesZoom;
+
+/**
  A Boolean value that controls whether the rotaion gesture is enabled. Default value is `NO`.
  
  @discussion To support the rotation when `cropMode` is `RSKImageCropModeCustom` you must implement the data source method `imageCropViewControllerCustomMovementRect:`.
@@ -225,29 +236,29 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 @property (assign, nonatomic) CGFloat portraitSquareMaskRectInnerEdgeInset;
 
 /**
- The vertical space between the top of the 'Move and Scale' label and the top of the crop view in portrait orientation. Default value is `64.0f`.
+ The vertical space between the top of the 'Move and Scale' label and the top of the crop view's safe area in portrait orientation. Default value is `44.0f`.
  */
-@property (assign, nonatomic) CGFloat portraitMoveAndScaleLabelTopAndCropViewTopVerticalSpace;
+@property (assign, nonatomic) CGFloat portraitMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace;
 
 /**
- The vertical space between the bottom of the crop view and the bottom of the 'Cancel' button in portrait orientation. Default value is `21.0f`.
+ The vertical space between the bottom of the crop view's safe area and the bottom of the 'Cancel' button in portrait orientation. Default value is `21.0f`.
  */
-@property (assign, nonatomic) CGFloat portraitCropViewBottomAndCancelButtonBottomVerticalSpace;
+@property (assign, nonatomic) CGFloat portraitCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace;
 
 /**
- The vertical space between the bottom of the crop view and the bottom of the 'Choose' button in portrait orientation. Default value is `21.0f`.
+ The vertical space between the bottom of the crop view's safe area and the bottom of the 'Choose' button in portrait orientation. Default value is `21.0f`.
  */
-@property (assign, nonatomic) CGFloat portraitCropViewBottomAndChooseButtonBottomVerticalSpace;
+@property (assign, nonatomic) CGFloat portraitCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace;
 
 /**
- The horizontal space between the leading of the 'Cancel' button and the leading of the crop view in portrait orientation. Default value is `13.0f`.
+ The horizontal space between the leading of the 'Cancel' button and the leading of the crop view's safe area in portrait orientation. Default value is `13.0f`.
  */
-@property (assign, nonatomic) CGFloat portraitCancelButtonLeadingAndCropViewLeadingHorizontalSpace;
+@property (assign, nonatomic) CGFloat portraitCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace;
 
 /**
- The horizontal space between the trailing of the crop view and the trailing of the 'Choose' button in portrait orientation. Default value is `13.0f`.
+ The horizontal space between the trailing of the crop view's safe area and the trailing of the 'Choose' button in portrait orientation. Default value is `13.0f`.
  */
-@property (assign, nonatomic) CGFloat portraitCropViewTrailingAndChooseButtonTrailingHorizontalSpace;
+@property (assign, nonatomic) CGFloat portraitCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace;
 
 /**
  The inset of the circle mask rect's area within the crop view's area in landscape orientation. Default value is `45.0f`.
@@ -260,35 +271,36 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 @property (assign, nonatomic) CGFloat landscapeSquareMaskRectInnerEdgeInset;
 
 /**
- The vertical space between the top of the 'Move and Scale' label and the top of the crop view in landscape orientation. Default value is `12.0f`.
+ The vertical space between the top of the 'Move and Scale' label and the top of the crop view's safe area in landscape orientation. Default value is `12.0f`.
  */
-@property (assign, nonatomic) CGFloat landscapeMoveAndScaleLabelTopAndCropViewTopVerticalSpace;
+@property (assign, nonatomic) CGFloat landscapeMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace;
 
 /**
- The vertical space between the bottom of the crop view and the bottom of the 'Cancel' button in landscape orientation. Default value is `12.0f`.
+ The vertical space between the bottom of the crop view's safe area and the bottom of the 'Cancel' button in landscape orientation. Default value is `12.0f`.
  */
-@property (assign, nonatomic) CGFloat landscapeCropViewBottomAndCancelButtonBottomVerticalSpace;
+@property (assign, nonatomic) CGFloat landscapeCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace;
 
 /**
- The vertical space between the bottom of the crop view and the bottom of the 'Choose' button in landscape orientation. Default value is `12.0f`.
+ The vertical space between the bottom of the crop view's safe area and the bottom of the 'Choose' button in landscape orientation. Default value is `12.0f`.
  */
-@property (assign, nonatomic) CGFloat landscapeCropViewBottomAndChooseButtonBottomVerticalSpace;
+@property (assign, nonatomic) CGFloat landscapeCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace;
 
 /**
- The horizontal space between the leading of the 'Cancel' button and the leading of the crop view in landscape orientation. Default value is `13.0f`.
+ The horizontal space between the leading of the 'Cancel' button and the leading of the crop view's safe area in landscape orientation. Default value is `13.0f`.
  */
-@property (assign, nonatomic) CGFloat landscapeCancelButtonLeadingAndCropViewLeadingHorizontalSpace;
+@property (assign, nonatomic) CGFloat landscapeCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace;
 
 /**
- The horizontal space between the trailing of the crop view and the trailing of the 'Choose' button in landscape orientation. Default value is `13.0f`.
+ The horizontal space between the trailing of the crop view's safe area and the trailing of the 'Choose' button in landscape orientation. Default value is `13.0f`.
  */
-@property (assign, nonatomic) CGFloat landscapeCropViewTrailingAndChooseButtonTrailingHorizontalSpace;
+@property (assign, nonatomic) CGFloat landscapeCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace;
 
 @end
 
 /**
  The `RSKImageCropViewControllerDataSource` protocol is adopted by an object that provides a custom rect and a custom path for the mask and a custom movement rect for the image.
  */
+NS_SWIFT_UI_ACTOR
 @protocol RSKImageCropViewControllerDataSource <NSObject>
 
 /**
@@ -323,6 +335,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 /**
  The `RSKImageCropViewControllerDelegate` protocol defines messages sent to a image crop view controller delegate when crop image was canceled or the original image was cropped.
  */
+NS_SWIFT_UI_ACTOR
 @protocol RSKImageCropViewControllerDelegate <NSObject>
 
 /**
@@ -349,4 +362,4 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 
 @end
 
-NS_ASSUME_NONNULL_END
+NS_HEADER_AUDIT_END(nullability, sendability)

+ 120 - 58
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.m

@@ -1,7 +1,7 @@
 //
 // RSKImageCropViewController.m
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -25,6 +25,7 @@
 #import "RSKImageCropViewController.h"
 #import "RSKTouchView.h"
 #import "RSKImageScrollView.h"
+#import "RSKImageScrollViewDelegate.h"
 #import "RSKInternalUtility.h"
 #import "UIImage+RSKImageCropper.h"
 #import "CGGeometry+RSKImageCropper.h"
@@ -32,7 +33,7 @@
 static const CGFloat kResetAnimationDuration = 0.4;
 static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 
-@interface RSKImageCropViewController () <UIGestureRecognizerDelegate>
+@interface RSKImageCropViewController () <RSKImageScrollViewDelegate, UIGestureRecognizerDelegate>
 
 @property (assign, nonatomic) BOOL originalNavigationControllerNavigationBarHidden;
 @property (strong, nonatomic) UIImage *originalNavigationControllerNavigationBarShadowImage;
@@ -78,25 +79,27 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         _alwaysBounceVertical = NO;
         _alwaysBounceHorizontal = NO;
         _applyMaskToCroppedImage = NO;
+        _bounces = YES;
+        _bouncesZoom = YES;
         _maskLayerLineWidth = 1.0;
         _rotationEnabled = NO;
         _cropMode = RSKImageCropModeCircle;
         
         _portraitCircleMaskRectInnerEdgeInset = 15.0f;
         _portraitSquareMaskRectInnerEdgeInset = 20.0f;
-        _portraitMoveAndScaleLabelTopAndCropViewTopVerticalSpace = 64.0f;
-        _portraitCropViewBottomAndCancelButtonBottomVerticalSpace = 21.0f;
-        _portraitCropViewBottomAndChooseButtonBottomVerticalSpace = 21.0f;
-        _portraitCancelButtonLeadingAndCropViewLeadingHorizontalSpace = 13.0f;
-        _portraitCropViewTrailingAndChooseButtonTrailingHorizontalSpace = 13.0;
+        _portraitMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace = 44.0f;
+        _portraitCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace = 21.0f;
+        _portraitCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace = 21.0f;
+        _portraitCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace = 13.0f;
+        _portraitCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace = 13.0;
         
         _landscapeCircleMaskRectInnerEdgeInset = 45.0f;
         _landscapeSquareMaskRectInnerEdgeInset = 45.0f;
-        _landscapeMoveAndScaleLabelTopAndCropViewTopVerticalSpace = 12.0f;
-        _landscapeCropViewBottomAndCancelButtonBottomVerticalSpace = 12.0f;
-        _landscapeCropViewBottomAndChooseButtonBottomVerticalSpace = 12.0f;
-        _landscapeCancelButtonLeadingAndCropViewLeadingHorizontalSpace = 13.0;
-        _landscapeCropViewTrailingAndChooseButtonTrailingHorizontalSpace = 13.0;
+        _landscapeMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace = 12.0f;
+        _landscapeCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace = 12.0f;
+        _landscapeCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace = 12.0f;
+        _landscapeCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace = 13.0;
+        _landscapeCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace = 13.0;
     }
     return self;
 }
@@ -133,14 +136,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         self.edgesForExtendedLayout = UIRectEdgeNone;
     }
     
-    if (@available(iOS 11.0, *)) {
-        
-        self.imageScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-    }
-    else if ([self respondsToSelector:@selector(automaticallyAdjustsScrollViewInsets)] == YES) {
-        
-        self.automaticallyAdjustsScrollViewInsets = NO;
-    }
+    self.imageScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
     
     self.view.backgroundColor = [UIColor blackColor];
     self.view.clipsToBounds = YES;
@@ -198,7 +194,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 {
     [super viewDidLayoutSubviews];
     
-    if (!self.imageScrollView.zoomView) {
+    if (!self.imageScrollView.image) {
         [self displayImage];
     }
 }
@@ -213,13 +209,13 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         // ---------------------------
         
         NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.moveAndScaleLabel attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual
-                                                                         toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f
+                                                                         toItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeCenterX multiplier:1.0f
                                                                        constant:0.0f];
         [self.view addConstraint:constraint];
         
-        CGFloat constant = self.portraitMoveAndScaleLabelTopAndCropViewTopVerticalSpace;
+        CGFloat constant = self.portraitMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace;
         self.moveAndScaleLabelTopConstraint = [NSLayoutConstraint constraintWithItem:self.moveAndScaleLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual
-                                                                              toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0f
+                                                                              toItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeTop multiplier:1.0f
                                                                             constant:constant];
         [self.view addConstraint:self.moveAndScaleLabelTopConstraint];
         
@@ -227,14 +223,14 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         // The button "Cancel".
         // --------------------
         
-        constant = self.portraitCancelButtonLeadingAndCropViewLeadingHorizontalSpace;
+        constant = self.portraitCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace;
         self.cancelButtonLeadingConstraint = [NSLayoutConstraint constraintWithItem:self.cancelButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual
-                                                                             toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f
+                                                                             toItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeLeading multiplier:1.0f
                                                                            constant:constant];
         [self.view addConstraint:self.cancelButtonLeadingConstraint];
         
-        constant = self.portraitCropViewBottomAndCancelButtonBottomVerticalSpace;
-        self.cancelButtonBottomConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual
+        constant = self.portraitCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace;
+        self.cancelButtonBottomConstraint = [NSLayoutConstraint constraintWithItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual
                                                                             toItem:self.cancelButton attribute:NSLayoutAttributeBottom multiplier:1.0f
                                                                           constant:constant];
         [self.view addConstraint:self.cancelButtonBottomConstraint];
@@ -243,14 +239,14 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         // The button "Choose".
         // --------------------
         
-        constant = self.portraitCropViewTrailingAndChooseButtonTrailingHorizontalSpace;
-        self.chooseButtonTrailingConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual
+        constant = self.portraitCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace;
+        self.chooseButtonTrailingConstraint = [NSLayoutConstraint constraintWithItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual
                                                                               toItem:self.chooseButton attribute:NSLayoutAttributeTrailing multiplier:1.0f
                                                                             constant:constant];
         [self.view addConstraint:self.chooseButtonTrailingConstraint];
         
-        constant = self.portraitCropViewBottomAndChooseButtonBottomVerticalSpace;
-        self.chooseButtonBottomConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual
+        constant = self.portraitCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace;
+        self.chooseButtonBottomConstraint = [NSLayoutConstraint constraintWithItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual
                                                                             toItem:self.chooseButton attribute:NSLayoutAttributeBottom multiplier:1.0f
                                                                           constant:constant];
         [self.view addConstraint:self.chooseButtonBottomConstraint];
@@ -258,17 +254,17 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         self.didSetupConstraints = YES;
     } else {
         if ([self isPortraitInterfaceOrientation]) {
-            self.moveAndScaleLabelTopConstraint.constant = self.portraitMoveAndScaleLabelTopAndCropViewTopVerticalSpace;
-            self.cancelButtonBottomConstraint.constant = self.portraitCropViewBottomAndCancelButtonBottomVerticalSpace;
-            self.cancelButtonLeadingConstraint.constant = self.portraitCancelButtonLeadingAndCropViewLeadingHorizontalSpace;
-            self.chooseButtonBottomConstraint.constant = self.portraitCropViewBottomAndChooseButtonBottomVerticalSpace;
-            self.chooseButtonTrailingConstraint.constant = self.portraitCropViewTrailingAndChooseButtonTrailingHorizontalSpace;
+            self.moveAndScaleLabelTopConstraint.constant = self.portraitMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace;
+            self.cancelButtonBottomConstraint.constant = self.portraitCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace;
+            self.cancelButtonLeadingConstraint.constant = self.portraitCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace;
+            self.chooseButtonBottomConstraint.constant = self.portraitCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace;
+            self.chooseButtonTrailingConstraint.constant = self.portraitCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace;
         } else {
-            self.moveAndScaleLabelTopConstraint.constant = self.landscapeMoveAndScaleLabelTopAndCropViewTopVerticalSpace;
-            self.cancelButtonBottomConstraint.constant = self.landscapeCropViewBottomAndCancelButtonBottomVerticalSpace;
-            self.cancelButtonLeadingConstraint.constant = self.landscapeCancelButtonLeadingAndCropViewLeadingHorizontalSpace;
-            self.chooseButtonBottomConstraint.constant = self.landscapeCropViewBottomAndChooseButtonBottomVerticalSpace;
-            self.chooseButtonTrailingConstraint.constant = self.landscapeCropViewTrailingAndChooseButtonTrailingHorizontalSpace;
+            self.moveAndScaleLabelTopConstraint.constant = self.landscapeMoveAndScaleLabelTopAndCropViewSafeAreaTopVerticalSpace;
+            self.cancelButtonBottomConstraint.constant = self.landscapeCropViewSafeAreaBottomAndCancelButtonBottomVerticalSpace;
+            self.cancelButtonLeadingConstraint.constant = self.landscapeCancelButtonLeadingAndCropViewSafeAreaLeadingHorizontalSpace;
+            self.chooseButtonBottomConstraint.constant = self.landscapeCropViewSafeAreaBottomAndChooseButtonBottomVerticalSpace;
+            self.chooseButtonTrailingConstraint.constant = self.landscapeCropViewSafeAreaTrailingAndChooseButtonTrailingHorizontalSpace;
         }
     }
 }
@@ -283,6 +279,9 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         _imageScrollView.aspectFill = self.avoidEmptySpaceAroundImage;
         _imageScrollView.alwaysBounceHorizontal = self.alwaysBounceHorizontal;
         _imageScrollView.alwaysBounceVertical = self.alwaysBounceVertical;
+        _imageScrollView.bounces = self.bounces;
+        _imageScrollView.bouncesZoom = self.bouncesZoom;
+        _imageScrollView.imageScrollViewDelegate = self;
     }
     return _imageScrollView;
 }
@@ -530,12 +529,30 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
     }
 }
 
+- (void)setBounces:(BOOL)bounces
+{
+    if (_bounces != bounces) {
+        _bounces = bounces;
+        
+        self.imageScrollView.bounces = bounces;
+    }
+}
+
+- (void)setBouncesZoom:(BOOL)bouncesZoom
+{
+    if (_bouncesZoom != bouncesZoom) {
+        _bouncesZoom = bouncesZoom;
+        
+        self.imageScrollView.bouncesZoom = bouncesZoom;
+    }
+}
+
 - (void)setCropMode:(RSKImageCropMode)cropMode
 {
     if (_cropMode != cropMode) {
         _cropMode = cropMode;
         
-        if (self.imageScrollView.zoomView) {
+        if (self.imageScrollView.image) {
             [self reset:NO];
         }
     }
@@ -560,10 +577,14 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         [clipPath appendPath:maskPath];
         clipPath.usesEvenOddFillRule = YES;
         
-        CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
-        pathAnimation.duration = [CATransaction animationDuration];
-        pathAnimation.timingFunction = [CATransaction animationTimingFunction];
-        [self.maskLayer addAnimation:pathAnimation forKey:@"path"];
+        CAAnimation *animation = (CAAnimation *)[self.overlayView actionForLayer:self.overlayView.layer forKey:@"backgroundColor"];
+        if ([animation isKindOfClass:[CAAnimation class]]) {
+            CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
+            pathAnimation.duration = animation.duration;
+            pathAnimation.timingFunction = animation.timingFunction;
+            
+            [self.maskLayer addAnimation:pathAnimation forKey:@"path"];
+        }
         
         self.maskLayer.path = [clipPath CGPath];
     }
@@ -631,6 +652,8 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 
 - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated
 {
+    rect = [self.imageScrollView convertRect:rect fromView:self.view];
+    rect = [self.imageScrollView convertRect:rect toCoordinateSpace:self.imageScrollView.imageCoordinateSpace];
     [self.imageScrollView zoomToRect:rect animated:animated];
 }
 
@@ -664,7 +687,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 - (void)resetContentOffset
 {
     CGSize boundsSize = self.imageScrollView.bounds.size;
-    CGRect frameToCenter = self.imageScrollView.zoomView.frame;
+    CGRect frameToCenter = self.imageScrollView.imageFrame;
     
     CGPoint contentOffset;
     if (CGRectGetWidth(frameToCenter) > boundsSize.width) {
@@ -736,7 +759,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 - (void)displayImage
 {
     if (self.originalImage) {
-        [self.imageScrollView displayImage:self.originalImage];
+        self.imageScrollView.image = self.originalImage;
         [self reset:NO];
 
         if ([self.delegate respondsToSelector:@selector(imageCropViewControllerDidDisplayImage:)]) {
@@ -869,10 +892,11 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
             
             CGSize maskSize = CGSizeMake(diameter, diameter);
             
-            self.maskRect = CGRectMake((viewWidth - maskSize.width) * 0.5f,
-                                       (viewHeight - maskSize.height) * 0.5f,
-                                       maskSize.width,
-                                       maskSize.height);
+            CGRect maskRect = CGRectMake(floor((viewWidth - maskSize.width) * 0.5f),
+                                         floor((viewHeight - maskSize.height) * 0.5f),
+                                         maskSize.width,
+                                         maskSize.height);
+            self.maskRect = CGRectIntegral(maskRect);
             break;
         }
         case RSKImageCropModeSquare: {
@@ -888,10 +912,11 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
             
             CGSize maskSize = CGSizeMake(length, length);
             
-            self.maskRect = CGRectMake((viewWidth - maskSize.width) * 0.5f,
-                                       (viewHeight - maskSize.height) * 0.5f,
-                                       maskSize.width,
-                                       maskSize.height);
+            CGRect maskRect = CGRectMake(floor((viewWidth - maskSize.width) * 0.5f),
+                                         floor((viewHeight - maskSize.height) * 0.5f),
+                                         maskSize.width,
+                                         maskSize.height);
+            self.maskRect = CGRectIntegral(maskRect);
             break;
         }
         case RSKImageCropModeCustom: {
@@ -1028,11 +1053,48 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
     }
 }
 
+#pragma mark - RSKImageScrollViewDelegate
+
+- (void)imageScrollViewWillBeginDragging
+{
+    [self updateIsUserInteractionEnabledOfCancelAndChooseButtons];
+}
+
+- (void)imageScrollViewDidEndDragging:(BOOL)willDecelerate
+{
+    if (willDecelerate == NO) {
+        [self updateIsUserInteractionEnabledOfCancelAndChooseButtons];
+    }
+}
+
+- (void)imageScrollViewDidEndDecelerating
+{
+    [self updateIsUserInteractionEnabledOfCancelAndChooseButtons];
+}
+
+- (void)imageScrollViewWillBeginZooming
+{
+    [self updateIsUserInteractionEnabledOfCancelAndChooseButtons];
+}
+
+- (void)imageScrollViewDidEndZooming
+{
+    [self updateIsUserInteractionEnabledOfCancelAndChooseButtons];
+}
+
+- (void)updateIsUserInteractionEnabledOfCancelAndChooseButtons
+{
+    BOOL isUserInteractionEnabled = (self.imageScrollView.isDragging || self.imageScrollView.isDecelerating || self.imageScrollView.isZooming) == NO;
+    
+    [self.cancelButton setUserInteractionEnabled:isUserInteractionEnabled];
+    [self.chooseButton setUserInteractionEnabled:isUserInteractionEnabled];
+}
+
 #pragma mark - UIGestureRecognizerDelegate
 
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
 {
-    return YES;
+    return ([gestureRecognizer isEqual:self.doubleTapGestureRecognizer] || [otherGestureRecognizer isEqual:self.doubleTapGestureRecognizer]) == NO;
 }
 
 @end

+ 2 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropper.h

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.h
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -38,6 +38,7 @@ FOUNDATION_EXPORT const unsigned char RSKImageCropperVersionString[];
 #import <RSKImageCropper/RSKImageCropViewController.h>
 #import <RSKImageCropper/RSKImageCropViewController+Protected.h>
 #import <RSKImageCropper/RSKImageScrollView.h>
+#import <RSKImageCropper/RSKImageScrollViewDelegate.h>
 #import <RSKImageCropper/RSKInternalUtility.h>
 #import <RSKImageCropper/RSKTouchView.h>
 #import <RSKImageCropper/UIImage+RSKImageCropper.h>

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/ar.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/bg.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/bs.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/ca.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/cs.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/da.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/de.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/el.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/en.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/es.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/et.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 30 - 0
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fa.lproj/RSKImageCropper.strings

@@ -0,0 +1,30 @@
+//
+// RSKImageCropper.strings
+//
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+
+/* Move and Scale label */
+"Move and Scale" = "جابجایی و بزرگ نمایی";
+/* Cancel button */
+"Cancel" = "لغو";
+/* Choose button */
+"Choose" = "انتخاب";

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fi.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fil.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
KulexiuForTeacher/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle/fr.lproj/RSKImageCropper.strings

@@ -1,7 +1,7 @@
 //
 // RSKImageCropper.strings
 //
-// Copyright (c) 2014-present Ruslan Skorb, http://ruslanskorb.com/
+// Copyright (c) 2014-present Ruslan Skorb, https://ruslanskorb.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal

Some files were not shown because too many files changed in this diff