覆盖羽声
This commit is contained in:
4
Podfile
4
Podfile
@@ -8,7 +8,7 @@ def taget_pods
|
|||||||
|
|
||||||
pod 'LLDebugTool',:configurations => ['Debug'] #调试工具
|
pod 'LLDebugTool',:configurations => ['Debug'] #调试工具
|
||||||
# pod 'MLeaksFinder',:configurations => ['Debug'] #调试工具
|
# pod 'MLeaksFinder',:configurations => ['Debug'] #调试工具
|
||||||
# pod 'IQKeyboardManager'
|
pod 'IQKeyboardManager'
|
||||||
#网络请求
|
#网络请求
|
||||||
pod 'AFNetworking'
|
pod 'AFNetworking'
|
||||||
#图片加载
|
#图片加载
|
||||||
@@ -24,6 +24,8 @@ def taget_pods
|
|||||||
pod 'TZImagePickerController'
|
pod 'TZImagePickerController'
|
||||||
# 布局
|
# 布局
|
||||||
pod 'Masonry'
|
pod 'Masonry'
|
||||||
|
# 数据存储
|
||||||
|
pod 'FMDB'
|
||||||
#轮播
|
#轮播
|
||||||
pod 'SDCycleScrollView'
|
pod 'SDCycleScrollView'
|
||||||
#日期选择
|
#日期选择
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ PODS:
|
|||||||
- FMDB/Core (2.7.12)
|
- FMDB/Core (2.7.12)
|
||||||
- FMDB/standard (2.7.12):
|
- FMDB/standard (2.7.12):
|
||||||
- FMDB/Core
|
- FMDB/Core
|
||||||
|
- IQKeyboardManager (6.5.19)
|
||||||
- JXCategoryView (1.6.8)
|
- JXCategoryView (1.6.8)
|
||||||
- JXPagingView/Pager (2.1.3)
|
- JXPagingView/Pager (2.1.3)
|
||||||
- libwebp (1.5.0):
|
- libwebp (1.5.0):
|
||||||
@@ -250,6 +251,8 @@ DEPENDENCIES:
|
|||||||
- AvoidCrash
|
- AvoidCrash
|
||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView/Pager
|
- JXPagingView/Pager
|
||||||
- LLDebugTool
|
- LLDebugTool
|
||||||
@@ -292,6 +295,7 @@ SPEC REPOS:
|
|||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
- FMDB
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView
|
- JXPagingView
|
||||||
- libwebp
|
- libwebp
|
||||||
@@ -345,6 +349,7 @@ SPEC CHECKSUMS:
|
|||||||
BRPickerView: 6dd69ea2c48e0a0abf1d197a705050e13143ee63
|
BRPickerView: 6dd69ea2c48e0a0abf1d197a705050e13143ee63
|
||||||
Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
|
Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
|
||||||
FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
|
FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
|
||||||
|
IQKeyboardManager: c8665b3396bd0b79402b4c573eac345a31c7d485
|
||||||
JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518
|
JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518
|
||||||
JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
|
JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
|
||||||
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
||||||
@@ -379,6 +384,6 @@ SPEC CHECKSUMS:
|
|||||||
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
||||||
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
||||||
|
|
||||||
PODFILE CHECKSUM: 9f0c224f530b4e6d6636265a8440d96ff79f0a83
|
PODFILE CHECKSUM: 0d9fb42b40922f1e7b70bca0655faf5be6d1d454
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
48
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQNSArray+Sort.h
generated
Normal file
48
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQNSArray+Sort.h
generated
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
//
|
||||||
|
// IQNSArray+Sort.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@class UIView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
UIView.subviews sorting category.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface NSArray (IQ_NSArray_Sort)
|
||||||
|
|
||||||
|
///--------------
|
||||||
|
/// @name Sorting
|
||||||
|
///--------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the array by sorting the UIView's by their tag property.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSArray<__kindof UIView*> * sortedArrayByTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the array by sorting the UIView's by their tag property.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSArray<__kindof UIView*> * sortedArrayByPosition;
|
||||||
|
|
||||||
|
@end
|
||||||
72
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQNSArray+Sort.m
generated
Normal file
72
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQNSArray+Sort.m
generated
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
//
|
||||||
|
// IQNSArray+Sort.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import "IQNSArray+Sort.h"
|
||||||
|
#import "IQUIView+Hierarchy.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation NSArray (IQ_NSArray_Sort)
|
||||||
|
|
||||||
|
- (NSArray<UIView*>*)sortedArrayByTag
|
||||||
|
{
|
||||||
|
return [self sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) {
|
||||||
|
|
||||||
|
if ([view1 respondsToSelector:@selector(tag)] && [view2 respondsToSelector:@selector(tag)])
|
||||||
|
{
|
||||||
|
if ([view1 tag] < [view2 tag]) return NSOrderedAscending;
|
||||||
|
|
||||||
|
else if ([view1 tag] > [view2 tag]) return NSOrderedDescending;
|
||||||
|
|
||||||
|
else return NSOrderedSame;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NSOrderedSame;
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSArray<UIView*>*)sortedArrayByPosition
|
||||||
|
{
|
||||||
|
return [self sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) {
|
||||||
|
|
||||||
|
CGFloat x1 = CGRectGetMinX(view1.frame);
|
||||||
|
CGFloat y1 = CGRectGetMinY(view1.frame);
|
||||||
|
CGFloat x2 = CGRectGetMinX(view2.frame);
|
||||||
|
CGFloat y2 = CGRectGetMinY(view2.frame);
|
||||||
|
|
||||||
|
if (y1 < y2) return NSOrderedAscending;
|
||||||
|
|
||||||
|
else if (y1 > y2) return NSOrderedDescending;
|
||||||
|
|
||||||
|
//Else both y are same so checking for x positions
|
||||||
|
else if (x1 < x2) return NSOrderedAscending;
|
||||||
|
|
||||||
|
else if (x1 > x2) return NSOrderedDescending;
|
||||||
|
|
||||||
|
else return NSOrderedSame;
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
62
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIScrollView+Additions.h
generated
Normal file
62
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIScrollView+Additions.h
generated
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
//
|
||||||
|
// IQUIScrollView+Additions.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UIScrollView (Additions)
|
||||||
|
|
||||||
|
/**
|
||||||
|
If YES, then scrollview will ignore scrolling (simply not scroll it) for adjusting textfield position. Default is NO.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldIgnoreScrollingAdjustment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
If YES, then scrollview will ignore content inset adjustment (simply not updating it) when keyboard is shown. Default is NO.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldIgnoreContentInsetAdjustment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Restore scrollViewContentOffset when resigning from scrollView. Default is NO.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldRestoreScrollViewContentOffset;
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UITableView (PreviousNextIndexPath)
|
||||||
|
|
||||||
|
-(nullable NSIndexPath*)previousIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath;
|
||||||
|
//-(nullable NSIndexPath*)nextIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UICollectionView (PreviousNextIndexPath)
|
||||||
|
|
||||||
|
-(nullable NSIndexPath*)previousIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath;
|
||||||
|
//-(nullable NSIndexPath*)nextIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath;
|
||||||
|
|
||||||
|
@end
|
||||||
165
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIScrollView+Additions.m
generated
Normal file
165
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIScrollView+Additions.m
generated
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
//
|
||||||
|
// IQUIScrollView+Additions.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
#import "IQUIScrollView+Additions.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UIScrollView (Additions)
|
||||||
|
|
||||||
|
-(void)setShouldIgnoreScrollingAdjustment:(BOOL)shouldIgnoreScrollingAdjustment
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(shouldIgnoreScrollingAdjustment), @(shouldIgnoreScrollingAdjustment), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)shouldIgnoreScrollingAdjustment
|
||||||
|
{
|
||||||
|
NSNumber *shouldIgnoreScrollingAdjustment = objc_getAssociatedObject(self, @selector(shouldIgnoreScrollingAdjustment));
|
||||||
|
|
||||||
|
return [shouldIgnoreScrollingAdjustment boolValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setShouldIgnoreContentInsetAdjustment:(BOOL)shouldIgnoreContentInsetAdjustment
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(shouldIgnoreContentInsetAdjustment), @(shouldIgnoreContentInsetAdjustment), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)shouldIgnoreContentInsetAdjustment
|
||||||
|
{
|
||||||
|
NSNumber *shouldIgnoreContentInsetAdjustment = objc_getAssociatedObject(self, @selector(shouldIgnoreContentInsetAdjustment));
|
||||||
|
|
||||||
|
return [shouldIgnoreContentInsetAdjustment boolValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setShouldRestoreScrollViewContentOffset:(BOOL)shouldRestoreScrollViewContentOffset
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(shouldRestoreScrollViewContentOffset), @(shouldRestoreScrollViewContentOffset), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)shouldRestoreScrollViewContentOffset
|
||||||
|
{
|
||||||
|
NSNumber *shouldRestoreScrollViewContentOffset = objc_getAssociatedObject(self, @selector(shouldRestoreScrollViewContentOffset));
|
||||||
|
|
||||||
|
return [shouldRestoreScrollViewContentOffset boolValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UITableView (PreviousNextIndexPath)
|
||||||
|
|
||||||
|
-(nullable NSIndexPath*)previousIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath
|
||||||
|
{
|
||||||
|
NSInteger previousRow = indexPath.row - 1;
|
||||||
|
NSInteger previousSection = indexPath.section;
|
||||||
|
|
||||||
|
//Fixing indexPath
|
||||||
|
if (previousRow < 0)
|
||||||
|
{
|
||||||
|
previousSection -= 1;
|
||||||
|
|
||||||
|
if (previousSection >= 0)
|
||||||
|
{
|
||||||
|
previousRow = [self numberOfRowsInSection:previousSection]-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previousRow >= 0 && previousSection >= 0)
|
||||||
|
{
|
||||||
|
return [NSIndexPath indexPathForRow:previousRow inSection:previousSection];
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-(nullable NSIndexPath*)nextIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath
|
||||||
|
//{
|
||||||
|
// NSInteger nextRow = indexPath.row + 1;
|
||||||
|
// NSInteger nextSection = indexPath.section;
|
||||||
|
//
|
||||||
|
// //Fixing indexPath
|
||||||
|
// if (nextRow >= [self numberOfRowsInSection:nextSection])
|
||||||
|
// {
|
||||||
|
// nextRow = 0;
|
||||||
|
// nextSection += 1;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (self.numberOfSections > nextSection && [self numberOfRowsInSection:nextSection] > nextRow)
|
||||||
|
// {
|
||||||
|
// return [NSIndexPath indexPathForItem:nextRow inSection:nextSection];
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return nil;
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UICollectionView (PreviousNextIndexPath)
|
||||||
|
|
||||||
|
-(nullable NSIndexPath*)previousIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath
|
||||||
|
{
|
||||||
|
NSInteger previousRow = indexPath.row - 1;
|
||||||
|
NSInteger previousSection = indexPath.section;
|
||||||
|
|
||||||
|
//Fixing indexPath
|
||||||
|
if (previousRow < 0)
|
||||||
|
{
|
||||||
|
previousSection -= 1;
|
||||||
|
|
||||||
|
if (previousSection >= 0)
|
||||||
|
{
|
||||||
|
previousRow = [self numberOfItemsInSection:previousSection]-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previousRow >= 0 && previousSection >= 0)
|
||||||
|
{
|
||||||
|
return [NSIndexPath indexPathForItem:previousRow inSection:previousSection];
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-(nullable NSIndexPath*)nextIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath
|
||||||
|
//{
|
||||||
|
// NSInteger nextRow = indexPath.row + 1;
|
||||||
|
// NSInteger nextSection = indexPath.section;
|
||||||
|
//
|
||||||
|
// //Fixing indexPath
|
||||||
|
// if (nextRow >= [self numberOfItemsInSection:nextSection])
|
||||||
|
// {
|
||||||
|
// nextRow = 0;
|
||||||
|
// nextSection += 1;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (self.numberOfSections > nextSection && [self numberOfItemsInSection:nextSection] > nextRow)
|
||||||
|
// {
|
||||||
|
// return [NSIndexPath indexPathForItem:nextRow inSection:nextSection];
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return nil;
|
||||||
|
//}
|
||||||
|
|
||||||
|
@end
|
||||||
63
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUITextFieldView+Additions.h
generated
Normal file
63
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUITextFieldView+Additions.h
generated
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
//
|
||||||
|
// IQUITextFieldView+Additions.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQKeyboardManagerConstants.h>
|
||||||
|
/**
|
||||||
|
UIView category for managing UITextField/UITextView
|
||||||
|
*/
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UIView (Additions)
|
||||||
|
|
||||||
|
/**
|
||||||
|
To set customized distance from keyboard for textField/textView. Can't be less than zero
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) CGFloat keyboardDistanceFromTextField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
If shouldIgnoreSwitchingByNextPrevious is YES then library will ignore this textField/textView while moving to other textField/textView using keyboard toolbar next previous buttons. Default is NO
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL ignoreSwitchingByNextPrevious;
|
||||||
|
|
||||||
|
///**
|
||||||
|
// Override Enable/disable managing distance between keyboard and textField behavior for this particular textField.
|
||||||
|
// */
|
||||||
|
@property(nonatomic, assign) IQEnableMode enableMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Override resigns Keyboard on touching outside of UITextField/View behavior for this particular textField.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) IQEnableMode shouldResignOnTouchOutsideMode;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
///-------------------------------------------
|
||||||
|
/// @name Custom KeyboardDistanceFromTextField
|
||||||
|
///-------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Uses default keyboard distance for textField.
|
||||||
|
*/
|
||||||
|
extern CGFloat const kIQUseDefaultKeyboardDistance;
|
||||||
92
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUITextFieldView+Additions.m
generated
Normal file
92
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUITextFieldView+Additions.m
generated
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
//
|
||||||
|
// IQUITextFieldView+Additions.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
#import "IQUITextFieldView+Additions.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UIView (Additions)
|
||||||
|
|
||||||
|
-(void)setKeyboardDistanceFromTextField:(CGFloat)keyboardDistanceFromTextField
|
||||||
|
{
|
||||||
|
//Can't be less than zero. Minimum is zero.
|
||||||
|
keyboardDistanceFromTextField = MAX(keyboardDistanceFromTextField, 0);
|
||||||
|
|
||||||
|
objc_setAssociatedObject(self, @selector(keyboardDistanceFromTextField), @(keyboardDistanceFromTextField), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(CGFloat)keyboardDistanceFromTextField
|
||||||
|
{
|
||||||
|
NSNumber *keyboardDistanceFromTextField = objc_getAssociatedObject(self, @selector(keyboardDistanceFromTextField));
|
||||||
|
|
||||||
|
return (keyboardDistanceFromTextField != nil)?[keyboardDistanceFromTextField floatValue]:kIQUseDefaultKeyboardDistance;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setIgnoreSwitchingByNextPrevious:(BOOL)ignoreSwitchingByNextPrevious
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(ignoreSwitchingByNextPrevious), @(ignoreSwitchingByNextPrevious), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)ignoreSwitchingByNextPrevious
|
||||||
|
{
|
||||||
|
NSNumber *ignoreSwitchingByNextPrevious = objc_getAssociatedObject(self, @selector(ignoreSwitchingByNextPrevious));
|
||||||
|
|
||||||
|
return [ignoreSwitchingByNextPrevious boolValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setEnableMode:(IQEnableMode)enableMode
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(enableMode), @(enableMode), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQEnableMode)enableMode
|
||||||
|
{
|
||||||
|
NSNumber *enableMode = objc_getAssociatedObject(self, @selector(enableMode));
|
||||||
|
|
||||||
|
return [enableMode unsignedIntegerValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setShouldResignOnTouchOutsideMode:(IQEnableMode)shouldResignOnTouchOutsideMode
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(shouldResignOnTouchOutsideMode), @(shouldResignOnTouchOutsideMode), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQEnableMode)shouldResignOnTouchOutsideMode
|
||||||
|
{
|
||||||
|
NSNumber *shouldResignOnTouchOutsideMode = objc_getAssociatedObject(self, @selector(shouldResignOnTouchOutsideMode));
|
||||||
|
|
||||||
|
return [shouldResignOnTouchOutsideMode unsignedIntegerValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
///------------------------------------
|
||||||
|
/// @name keyboardDistanceFromTextField
|
||||||
|
///------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Uses default keyboard distance for textField.
|
||||||
|
*/
|
||||||
|
CGFloat const kIQUseDefaultKeyboardDistance = CGFLOAT_MAX;
|
||||||
|
|
||||||
135
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIView+Hierarchy.h
generated
Normal file
135
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIView+Hierarchy.h
generated
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
//
|
||||||
|
// IQUIView+Hierarchy.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQKeyboardManagerConstants.h>
|
||||||
|
|
||||||
|
@class UICollectionView, UIScrollView, UITableView, UISearchBar, NSArray;
|
||||||
|
|
||||||
|
/**
|
||||||
|
UIView hierarchy category.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UIView (IQ_UIView_Hierarchy)
|
||||||
|
|
||||||
|
///----------------------
|
||||||
|
/// @name viewControllers
|
||||||
|
///----------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the UIViewController object that manages the receiver.
|
||||||
|
*/
|
||||||
|
@property (nullable, nonatomic, readonly, strong) UIViewController *viewContainingController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the topMost UIViewController object in hierarchy.
|
||||||
|
*/
|
||||||
|
@property (nullable, nonatomic, readonly, strong) UIViewController *topMostController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the UIViewController object that is actually the parent of this object. Most of the time it's the viewController object which actually contains it, but result may be different if it's viewController is added as childViewController of another viewController.
|
||||||
|
*/
|
||||||
|
@property (nullable, nonatomic, readonly, strong) UIViewController *parentContainerViewController;
|
||||||
|
|
||||||
|
///-----------------------------------
|
||||||
|
/// @name Superviews/Subviews/Siblings
|
||||||
|
///-----------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the superView of provided class type.
|
||||||
|
|
||||||
|
@param classType class type of the object which is to be search in above hierarchy and return
|
||||||
|
|
||||||
|
@param belowView view object in upper hierarchy where method should stop searching and return nil
|
||||||
|
*/
|
||||||
|
-(nullable __kindof UIView*)superviewOfClassType:(nonnull Class)classType belowView:(nullable UIView*)belowView;
|
||||||
|
-(nullable __kindof UIView*)superviewOfClassType:(nonnull Class)classType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns all siblings of the receiver which canBecomeFirstResponder.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSArray<__kindof UIView*> *responderSiblings;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns all deep subViews of the receiver which canBecomeFirstResponder.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSArray<__kindof UIView*> *deepResponderViews;
|
||||||
|
|
||||||
|
///-------------------------
|
||||||
|
/// @name Special TextFields
|
||||||
|
///-------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns searchBar if receiver object is UISearchBarTextField, otherwise return nil.
|
||||||
|
*/
|
||||||
|
@property (nullable, nonatomic, readonly) UISearchBar *textFieldSearchBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns YES if the receiver object is UIAlertSheetTextField, otherwise return NO.
|
||||||
|
*/
|
||||||
|
@property (nonatomic, getter=isAlertViewTextField, readonly) BOOL alertViewTextField;
|
||||||
|
|
||||||
|
///----------------
|
||||||
|
/// @name Transform
|
||||||
|
///----------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns current view transform with respect to the 'toView'.
|
||||||
|
*/
|
||||||
|
-(CGAffineTransform)convertTransformToView:(nullable UIView*)toView;
|
||||||
|
|
||||||
|
///-----------------
|
||||||
|
/// @name Hierarchy
|
||||||
|
///-----------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns a string that represent the information about it's subview's hierarchy. You can use this method to debug the subview's positions.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSString *subHierarchy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns an string that represent the information about it's upper hierarchy. You can use this method to debug the superview's positions.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSString *superHierarchy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns an string that represent the information about it's frame positions. You can use this method to debug self positions.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSString *debugHierarchy;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
NSObject category to used for logging purposes
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface NSObject (IQ_Logging)
|
||||||
|
|
||||||
|
/**
|
||||||
|
Short description for logging purpose.
|
||||||
|
*/
|
||||||
|
@property (nonnull, nonatomic, readonly, copy) NSString *_IQDescription;
|
||||||
|
|
||||||
|
@end
|
||||||
435
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIView+Hierarchy.m
generated
Normal file
435
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIView+Hierarchy.m
generated
Normal file
@@ -0,0 +1,435 @@
|
|||||||
|
//
|
||||||
|
// IQUIView+Hierarchy.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
#import "IQUIView+Hierarchy.h"
|
||||||
|
#import "IQUITextFieldView+Additions.h"
|
||||||
|
#import "IQUIViewController+Additions.h"
|
||||||
|
#import "IQNSArray+Sort.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UIView (IQ_UIView_Hierarchy)
|
||||||
|
|
||||||
|
-(UIViewController*)viewContainingController
|
||||||
|
{
|
||||||
|
UIResponder *nextResponder = self;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
nextResponder = [nextResponder nextResponder];
|
||||||
|
|
||||||
|
if ([nextResponder isKindOfClass:[UIViewController class]])
|
||||||
|
return (UIViewController*)nextResponder;
|
||||||
|
|
||||||
|
}
|
||||||
|
while (nextResponder);
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(UIViewController *)topMostController
|
||||||
|
{
|
||||||
|
NSMutableArray<UIViewController*> *controllersHierarchy = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
UIViewController *topController = self.window.rootViewController;
|
||||||
|
|
||||||
|
if (topController)
|
||||||
|
{
|
||||||
|
[controllersHierarchy addObject:topController];
|
||||||
|
}
|
||||||
|
|
||||||
|
while ([topController presentedViewController])
|
||||||
|
{
|
||||||
|
|
||||||
|
topController = [topController presentedViewController];
|
||||||
|
[controllersHierarchy addObject:topController];
|
||||||
|
}
|
||||||
|
|
||||||
|
UIViewController *matchController = [self viewContainingController];
|
||||||
|
|
||||||
|
while (matchController && [controllersHierarchy containsObject:matchController] == NO)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
matchController = (UIViewController*)[matchController nextResponder];
|
||||||
|
|
||||||
|
}
|
||||||
|
while (matchController && [matchController isKindOfClass:[UIViewController class]] == NO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return matchController;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(UIViewController *)parentContainerViewController
|
||||||
|
{
|
||||||
|
UIViewController *matchController = [self viewContainingController];
|
||||||
|
|
||||||
|
UIViewController *parentContainerViewController = nil;
|
||||||
|
|
||||||
|
if (matchController.navigationController)
|
||||||
|
{
|
||||||
|
UINavigationController *navController = matchController.navigationController;
|
||||||
|
|
||||||
|
while (navController.navigationController)
|
||||||
|
{
|
||||||
|
navController = navController.navigationController;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIViewController *parentController = navController;
|
||||||
|
|
||||||
|
UIViewController *parentParentController = parentController.parentViewController;
|
||||||
|
|
||||||
|
while (parentParentController &&
|
||||||
|
([parentParentController isKindOfClass:[UINavigationController class]] == NO &&
|
||||||
|
[parentParentController isKindOfClass:[UITabBarController class]] == NO &&
|
||||||
|
[parentParentController isKindOfClass:[UISplitViewController class]] == NO))
|
||||||
|
{
|
||||||
|
parentController = parentParentController;
|
||||||
|
parentParentController = parentController.parentViewController;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (navController == parentController)
|
||||||
|
{
|
||||||
|
parentContainerViewController = navController.topViewController;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
parentContainerViewController = parentController;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (matchController.tabBarController)
|
||||||
|
{
|
||||||
|
if ([matchController.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]])
|
||||||
|
{
|
||||||
|
parentContainerViewController = [(UINavigationController*)matchController.tabBarController.selectedViewController topViewController];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
parentContainerViewController = matchController.tabBarController.selectedViewController;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UIViewController *matchParentController = matchController.parentViewController;
|
||||||
|
|
||||||
|
while (matchParentController &&
|
||||||
|
([matchParentController isKindOfClass:[UINavigationController class]] == NO &&
|
||||||
|
[matchParentController isKindOfClass:[UITabBarController class]] == NO &&
|
||||||
|
[matchParentController isKindOfClass:[UISplitViewController class]] == NO))
|
||||||
|
{
|
||||||
|
matchController = matchParentController;
|
||||||
|
matchParentController = matchController.parentViewController;
|
||||||
|
}
|
||||||
|
|
||||||
|
parentContainerViewController = matchController;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIViewController *finalController = [parentContainerViewController parentIQContainerViewController] ?: parentContainerViewController;
|
||||||
|
|
||||||
|
return finalController;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(UIView*)superviewOfClassType:(nonnull Class)classType
|
||||||
|
{
|
||||||
|
return [self superviewOfClassType:classType belowView:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(nullable __kindof UIView*)superviewOfClassType:(nonnull Class)classType belowView:(nullable UIView*)belowView
|
||||||
|
{
|
||||||
|
UIView *superview = self.superview;
|
||||||
|
|
||||||
|
while (superview)
|
||||||
|
{
|
||||||
|
if ([superview isKindOfClass:classType])
|
||||||
|
{
|
||||||
|
//If it's UIScrollView, then validating for special cases
|
||||||
|
if ([superview isKindOfClass:[UIScrollView class]])
|
||||||
|
{
|
||||||
|
NSString *classNameString = NSStringFromClass([superview class]);
|
||||||
|
|
||||||
|
// If it's not UITableViewWrapperView class, this is internal class which is actually manage in UITableview. The speciality of this class is that it's superview is UITableView.
|
||||||
|
// If it's not UITableViewCellScrollView class, this is internal class which is actually manage in UITableviewCell. The speciality of this class is that it's superview is UITableViewCell.
|
||||||
|
//If it's not _UIQueuingScrollView class, actually we validate for _ prefix which usually used by Apple internal classes
|
||||||
|
if ([superview.superview isKindOfClass:[UITableView class]] == NO &&
|
||||||
|
[superview.superview isKindOfClass:[UITableViewCell class]] == NO &&
|
||||||
|
[classNameString hasPrefix:@"_"] == NO)
|
||||||
|
{
|
||||||
|
return superview;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return superview;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (belowView == superview)
|
||||||
|
{
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
superview = superview.superview;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)_IQCanBecomeFirstResponder
|
||||||
|
{
|
||||||
|
BOOL _IQCanBecomeFirstResponder = NO;
|
||||||
|
|
||||||
|
if ([self conformsToProtocol:@protocol(UITextInput)])
|
||||||
|
{
|
||||||
|
if ([self respondsToSelector:@selector(isEditable)] && [self isKindOfClass:[UIScrollView class]])
|
||||||
|
{
|
||||||
|
_IQCanBecomeFirstResponder = [(UITextView*)self isEditable];
|
||||||
|
}
|
||||||
|
else if ([self respondsToSelector:@selector(isEnabled)])
|
||||||
|
{
|
||||||
|
_IQCanBecomeFirstResponder = [(UITextField*)self isEnabled];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_IQCanBecomeFirstResponder == YES)
|
||||||
|
{
|
||||||
|
_IQCanBecomeFirstResponder = ([self isUserInteractionEnabled] && ![self isHidden] && [self alpha]!=0.0 && ![self isAlertViewTextField] && !self.textFieldSearchBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _IQCanBecomeFirstResponder;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSArray<UIView*>*)responderSiblings
|
||||||
|
{
|
||||||
|
// Getting all siblings
|
||||||
|
NSArray<UIView*> *siblings = self.superview.subviews;
|
||||||
|
|
||||||
|
//Array of (UITextField/UITextView's).
|
||||||
|
NSMutableArray<UIView*> *tempTextFields = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
for (UIView *textField in siblings)
|
||||||
|
if ((textField == self || textField.ignoreSwitchingByNextPrevious == NO) && [textField _IQCanBecomeFirstResponder])
|
||||||
|
[tempTextFields addObject:textField];
|
||||||
|
|
||||||
|
return tempTextFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSArray<UIView*>*)deepResponderViews
|
||||||
|
{
|
||||||
|
NSMutableArray<UIView*> *textFields = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
for (UIView *textField in self.subviews)
|
||||||
|
{
|
||||||
|
if ((textField == self || textField.ignoreSwitchingByNextPrevious == NO) && [textField _IQCanBecomeFirstResponder])
|
||||||
|
{
|
||||||
|
[textFields addObject:textField];
|
||||||
|
}
|
||||||
|
//Sometimes there are hidden or disabled views and textField inside them still recorded, so we added some more validations here (Bug ID: #458)
|
||||||
|
//Uncommented else (Bug ID: #625)
|
||||||
|
else if (textField.subviews.count && [textField isUserInteractionEnabled] && ![textField isHidden] && [textField alpha]!=0.0)
|
||||||
|
{
|
||||||
|
[textFields addObjectsFromArray:[textField deepResponderViews]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//subviews are returning in incorrect order. Sorting according the frames 'y'.
|
||||||
|
return [textFields sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) {
|
||||||
|
|
||||||
|
CGRect frame1 = [view1 convertRect:view1.bounds toView:self];
|
||||||
|
CGRect frame2 = [view2 convertRect:view2.bounds toView:self];
|
||||||
|
|
||||||
|
CGFloat x1 = CGRectGetMinX(frame1);
|
||||||
|
CGFloat y1 = CGRectGetMinY(frame1);
|
||||||
|
CGFloat x2 = CGRectGetMinX(frame2);
|
||||||
|
CGFloat y2 = CGRectGetMinY(frame2);
|
||||||
|
|
||||||
|
if (y1 < y2) return NSOrderedAscending;
|
||||||
|
|
||||||
|
else if (y1 > y2) return NSOrderedDescending;
|
||||||
|
|
||||||
|
//Else both y are same so checking for x positions
|
||||||
|
else if (x1 < x2) return NSOrderedAscending;
|
||||||
|
|
||||||
|
else if (x1 > x2) return NSOrderedDescending;
|
||||||
|
|
||||||
|
else return NSOrderedSame;
|
||||||
|
}];
|
||||||
|
|
||||||
|
return textFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(CGAffineTransform)convertTransformToView:(UIView*)toView
|
||||||
|
{
|
||||||
|
if (toView == nil)
|
||||||
|
{
|
||||||
|
toView = self.window;
|
||||||
|
}
|
||||||
|
|
||||||
|
CGAffineTransform myTransform = CGAffineTransformIdentity;
|
||||||
|
|
||||||
|
//My Transform
|
||||||
|
{
|
||||||
|
UIView *superView = [self superview];
|
||||||
|
|
||||||
|
if (superView) myTransform = CGAffineTransformConcat(self.transform, [superView convertTransformToView:nil]);
|
||||||
|
else myTransform = self.transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
CGAffineTransform viewTransform = CGAffineTransformIdentity;
|
||||||
|
|
||||||
|
//view Transform
|
||||||
|
{
|
||||||
|
UIView *superView = [toView superview];
|
||||||
|
|
||||||
|
if (superView) viewTransform = CGAffineTransformConcat(toView.transform, [superView convertTransformToView:nil]);
|
||||||
|
else if (toView) viewTransform = toView.transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CGAffineTransformConcat(myTransform, CGAffineTransformInvert(viewTransform));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (NSInteger)depth
|
||||||
|
{
|
||||||
|
NSInteger depth = 0;
|
||||||
|
|
||||||
|
if ([self superview])
|
||||||
|
{
|
||||||
|
depth = [[self superview] depth] + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return depth;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)subHierarchy
|
||||||
|
{
|
||||||
|
NSMutableString *debugInfo = [[NSMutableString alloc] initWithString:@"\n"];
|
||||||
|
NSInteger depth = [self depth];
|
||||||
|
|
||||||
|
for (int counter = 0; counter < depth; counter ++) [debugInfo appendString:@"| "];
|
||||||
|
|
||||||
|
[debugInfo appendString:[self debugHierarchy]];
|
||||||
|
|
||||||
|
for (UIView *subview in self.subviews)
|
||||||
|
{
|
||||||
|
[debugInfo appendString:[subview subHierarchy]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return debugInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)superHierarchy
|
||||||
|
{
|
||||||
|
NSMutableString *debugInfo = [[NSMutableString alloc] init];
|
||||||
|
|
||||||
|
if (self.superview)
|
||||||
|
{
|
||||||
|
[debugInfo appendString:[self.superview superHierarchy]];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[debugInfo appendString:@"\n"];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSInteger depth = [self depth];
|
||||||
|
|
||||||
|
for (int counter = 0; counter < depth; counter ++) [debugInfo appendString:@"| "];
|
||||||
|
|
||||||
|
[debugInfo appendString:[self debugHierarchy]];
|
||||||
|
|
||||||
|
[debugInfo appendString:@"\n"];
|
||||||
|
|
||||||
|
return debugInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(NSString *)debugHierarchy
|
||||||
|
{
|
||||||
|
NSMutableString *debugInfo = [[NSMutableString alloc] init];
|
||||||
|
|
||||||
|
[debugInfo appendFormat:@"%@: ( %.0f, %.0f, %.0f, %.0f )",NSStringFromClass([self class]), CGRectGetMinX(self.frame), CGRectGetMinY(self.frame), CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)];
|
||||||
|
|
||||||
|
if ([self isKindOfClass:[UIScrollView class]])
|
||||||
|
{
|
||||||
|
UIScrollView *scrollView = (UIScrollView*)self;
|
||||||
|
[debugInfo appendFormat:@"%@: ( %.0f, %.0f )",NSStringFromSelector(@selector(contentSize)),scrollView.contentSize.width,scrollView.contentSize.height];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CGAffineTransformEqualToTransform(self.transform, CGAffineTransformIdentity) == false)
|
||||||
|
{
|
||||||
|
[debugInfo appendFormat:@"%@: %@",NSStringFromSelector(@selector(transform)),NSStringFromCGAffineTransform(self.transform)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return debugInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(UISearchBar *)textFieldSearchBar
|
||||||
|
{
|
||||||
|
UIResponder *searchBar = [self nextResponder];
|
||||||
|
|
||||||
|
while (searchBar)
|
||||||
|
{
|
||||||
|
if ([searchBar isKindOfClass:[UISearchBar class]])
|
||||||
|
{
|
||||||
|
return (UISearchBar*)searchBar;
|
||||||
|
}
|
||||||
|
else if ([searchBar isKindOfClass:[UIViewController class]]) //If found viewController but still not found UISearchBar then it's not the search bar textfield
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
searchBar = [searchBar nextResponder];
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)isAlertViewTextField
|
||||||
|
{
|
||||||
|
UIResponder *alertViewController = [self viewContainingController];
|
||||||
|
|
||||||
|
BOOL isAlertViewTextField = NO;
|
||||||
|
while (alertViewController && isAlertViewTextField == NO)
|
||||||
|
{
|
||||||
|
if ([alertViewController isKindOfClass:[UIAlertController class]])
|
||||||
|
{
|
||||||
|
isAlertViewTextField = YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
alertViewController = [alertViewController nextResponder];
|
||||||
|
}
|
||||||
|
|
||||||
|
return isAlertViewTextField;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation NSObject (IQ_Logging)
|
||||||
|
|
||||||
|
-(NSString *)_IQDescription
|
||||||
|
{
|
||||||
|
return [NSString stringWithFormat:@"<%@ %p>",NSStringFromClass([self class]),self];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
36
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIViewController+Additions.h
generated
Normal file
36
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIViewController+Additions.h
generated
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// IQUIViewController+Additions.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
@class NSLayoutConstraint;
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UIViewController (Additions)
|
||||||
|
|
||||||
|
/**
|
||||||
|
This method is provided to override by viewController's if the library lifts a viewController which you doesn't want to lift . This may happen if you have implemented side menu feature in your app and the library try to lift the side menu controller. Overriding this method in side menu class to return correct controller should fix the problem.
|
||||||
|
*/
|
||||||
|
-(nullable UIViewController*)parentIQContainerViewController;
|
||||||
|
|
||||||
|
@end
|
||||||
38
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIViewController+Additions.m
generated
Normal file
38
Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIViewController+Additions.m
generated
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
//
|
||||||
|
// IQUIViewController+Additions.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
#import "IQUIViewController+Additions.h"
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UIViewController (Additions)
|
||||||
|
|
||||||
|
-(nullable UIViewController*)parentIQContainerViewController
|
||||||
|
{
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
156
Pods/IQKeyboardManager/IQKeyboardManager/Constants/IQKeyboardManagerConstants.h
generated
Normal file
156
Pods/IQKeyboardManager/IQKeyboardManager/Constants/IQKeyboardManagerConstants.h
generated
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
//
|
||||||
|
// IQKeyboardManagerConstants.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#ifndef IQKeyboardManagerConstants_h
|
||||||
|
#define IQKeyboardManagerConstants_h
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
///-----------------------------------
|
||||||
|
/// @name IQAutoToolbarManageBehavior
|
||||||
|
///-----------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
`IQAutoToolbarBySubviews`
|
||||||
|
Creates Toolbar according to subview's hierarchy of Textfield's in view.
|
||||||
|
|
||||||
|
`IQAutoToolbarByTag`
|
||||||
|
Creates Toolbar according to tag property of TextField's.
|
||||||
|
|
||||||
|
`IQAutoToolbarByPosition`
|
||||||
|
Creates Toolbar according to the y,x position of textField in it's superview coordinate.
|
||||||
|
*/
|
||||||
|
typedef NS_ENUM(NSInteger, IQAutoToolbarManageBehavior) {
|
||||||
|
IQAutoToolbarBySubviews,
|
||||||
|
IQAutoToolbarByTag,
|
||||||
|
IQAutoToolbarByPosition,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
`IQPreviousNextDisplayModeDefault`
|
||||||
|
Show NextPrevious when there are more than 1 textField otherwise hide.
|
||||||
|
|
||||||
|
`IQPreviousNextDisplayModeAlwaysHide`
|
||||||
|
Do not show NextPrevious buttons in any case.
|
||||||
|
|
||||||
|
`IQPreviousNextDisplayModeAlwaysShow`
|
||||||
|
Always show nextPrevious buttons, if there are more than 1 textField then both buttons will be visible but will be shown as disabled.
|
||||||
|
*/
|
||||||
|
typedef NS_ENUM(NSUInteger, IQPreviousNextDisplayMode) {
|
||||||
|
IQPreviousNextDisplayModeDefault,
|
||||||
|
IQPreviousNextDisplayModeAlwaysHide,
|
||||||
|
IQPreviousNextDisplayModeAlwaysShow,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
`IQEnableModeDefault`
|
||||||
|
Pick default settings.
|
||||||
|
|
||||||
|
`IQEnableModeEnabled`
|
||||||
|
setting is enabled.
|
||||||
|
|
||||||
|
`IQEnableModeDisabled`
|
||||||
|
setting is disabled.
|
||||||
|
*/
|
||||||
|
typedef NS_ENUM(NSUInteger, IQEnableMode) {
|
||||||
|
IQEnableModeDefault,
|
||||||
|
IQEnableModeEnabled,
|
||||||
|
IQEnableModeDisabled,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/---------------------------------------------------------------------------------------------------\
|
||||||
|
\---------------------------------------------------------------------------------------------------/
|
||||||
|
| iOS NSNotification Mechanism |
|
||||||
|
/---------------------------------------------------------------------------------------------------\
|
||||||
|
\---------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When UITextField become first responder
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UITextFieldTextDidBeginEditingNotification (UITextField)
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When UITextView become first responder
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UITextViewTextDidBeginEditingNotification (UITextView)
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When switching focus from UITextField to another UITextField
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UITextFieldTextDidEndEditingNotification (UITextField1)
|
||||||
|
- UITextFieldTextDidBeginEditingNotification (UITextField2)
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When switching focus from UITextView to another UITextView
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UITextViewTextDidEndEditingNotification : (UITextView1)
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UITextViewTextDidBeginEditingNotification : (UITextView2)
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When switching focus from UITextField to UITextView
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UITextFieldTextDidEndEditingNotification (UITextField)
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UITextViewTextDidBeginEditingNotification (UITextView)
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When switching focus from UITextView to UITextField
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UITextViewTextDidEndEditingNotification (UITextView)
|
||||||
|
- UITextFieldTextDidBeginEditingNotification (UITextField)
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
When opening/closing UIKeyboard Predictive bar
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
On orientation change
|
||||||
|
------------------------------------------------------------
|
||||||
|
- UIApplicationWillChangeStatusBarOrientationNotification
|
||||||
|
- UIKeyboardWillHideNotification
|
||||||
|
- UIKeyboardDidHideNotification
|
||||||
|
- UIApplicationDidChangeStatusBarOrientationNotification
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
- UIKeyboardWillShowNotification
|
||||||
|
- UIKeyboardDidShowNotification
|
||||||
|
|
||||||
|
*/
|
||||||
28
Pods/IQKeyboardManager/IQKeyboardManager/Constants/IQKeyboardManagerConstantsInternal.h
generated
Normal file
28
Pods/IQKeyboardManager/IQKeyboardManager/Constants/IQKeyboardManagerConstantsInternal.h
generated
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// IQKeyboardManagerConstantsInternal.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#ifndef IQKeyboardManagerConstantsInternal_h
|
||||||
|
#define IQKeyboardManagerConstantsInternal_h
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
359
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardManager.h
generated
Executable file
359
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardManager.h
generated
Executable file
@@ -0,0 +1,359 @@
|
|||||||
|
//
|
||||||
|
// IQKeyboardManager.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <CoreGraphics/CoreGraphics.h>
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQKeyboardManagerConstants.h>
|
||||||
|
#import <IQKeyboardManager/IQUIView+IQKeyboardToolbar.h>
|
||||||
|
#import <IQKeyboardManager/IQPreviousNextView.h>
|
||||||
|
#import <IQKeyboardManager/IQUIViewController+Additions.h>
|
||||||
|
#import <IQKeyboardManager/IQKeyboardReturnKeyHandler.h>
|
||||||
|
#import <IQKeyboardManager/IQTextView.h>
|
||||||
|
#import <IQKeyboardManager/IQToolbar.h>
|
||||||
|
#import <IQKeyboardManager/IQUIScrollView+Additions.h>
|
||||||
|
#import <IQKeyboardManager/IQUITextFieldView+Additions.h>
|
||||||
|
#import <IQKeyboardManager/IQBarButtonItem.h>
|
||||||
|
#import <IQKeyboardManager/IQTitleBarButtonItem.h>
|
||||||
|
#import <IQKeyboardManager/IQUIView+Hierarchy.h>
|
||||||
|
|
||||||
|
@class UIFont, UIColor, UITapGestureRecognizer, UIView, UIImage;
|
||||||
|
|
||||||
|
@class NSString;
|
||||||
|
|
||||||
|
///---------------------
|
||||||
|
/// @name IQToolbar tags
|
||||||
|
///---------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Default tag for toolbar with Done button -1002.
|
||||||
|
*/
|
||||||
|
extern NSInteger const kIQDoneButtonToolbarTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Default tag for toolbar with Previous/Next buttons -1005.
|
||||||
|
*/
|
||||||
|
extern NSInteger const kIQPreviousNextButtonToolbarTag;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Code-less drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. Neither need to write any code nor any setup required and much more. A generic version of KeyboardManagement. https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQKeyboardManager : NSObject
|
||||||
|
|
||||||
|
///--------------------------
|
||||||
|
/// @name UIKeyboard handling
|
||||||
|
///--------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the default singleton instance. You are not allowed to create your own instances of this class.
|
||||||
|
*/
|
||||||
|
+ (nonnull instancetype)sharedManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Enable/disable managing distance between keyboard and textField. Default is YES(Enabled when class loads in `+(void)load` method).
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign, getter = isEnabled) BOOL enable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
To set keyboard distance from textField. can't be less than zero. Default is 10.0.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) CGFloat keyboardDistanceFromTextField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Refreshes textField/textView position if any external changes is explicitly made by user.
|
||||||
|
*/
|
||||||
|
- (void)reloadLayoutIfNeeded;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Boolean to know if keyboard is showing.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign, readonly, getter = isKeyboardShowing) BOOL keyboardShowing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
moved distance to the top used to maintain distance between keyboard and textField. Most of the time this will be a positive value.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign, readonly) CGFloat movedDistance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Will be called then movedDistance will be changed.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, copy) void (^movedDistanceChanged)(CGFloat movedDistance);
|
||||||
|
|
||||||
|
///-------------------------
|
||||||
|
/// @name IQToolbar handling
|
||||||
|
///-------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Automatic add IQToolbar functionality. Default is YES.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign, getter = isEnableAutoToolbar) BOOL enableAutoToolbar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
IQAutoToolbarBySubviews: Creates Toolbar according to subview's hierarchy of Textfield's in view.
|
||||||
|
IQAutoToolbarByTag: Creates Toolbar according to tag property of TextField's.
|
||||||
|
IQAutoToolbarByPosition: Creates Toolbar according to the y,x position of textField in it's superview coordinate.
|
||||||
|
|
||||||
|
Default is IQAutoToolbarBySubviews.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) IQAutoToolbarManageBehavior toolbarManageBehavior;
|
||||||
|
|
||||||
|
/**
|
||||||
|
If YES, then uses textField's tintColor property for IQToolbar, otherwise tint color is nil. Default is NO.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldToolbarUsesTextFieldTintColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This is used for toolbar.tintColor when textfield.keyboardAppearance is UIKeyboardAppearanceDefault. If shouldToolbarUsesTextFieldTintColor is YES then this property is ignored. Default is nil.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIColor *toolbarTintColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This is used for toolbar.barTintColor. Default is nil.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIColor *toolbarBarTintColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
IQPreviousNextDisplayModeDefault: Show NextPrevious when there are more than 1 textField otherwise hide.
|
||||||
|
IQPreviousNextDisplayModeAlwaysHide: Do not show NextPrevious buttons in any case.
|
||||||
|
IQPreviousNextDisplayModeAlwaysShow: Always show nextPrevious buttons, if there are more than 1 textField then both buttons will be visible but will be shown as disabled.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) IQPreviousNextDisplayMode previousNextDisplayMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Toolbar previous/next/done button icon, If nothing is provided then check toolbarDoneBarButtonItemText to draw done button.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIImage *toolbarPreviousBarButtonItemImage;
|
||||||
|
@property(nullable, nonatomic, strong) UIImage *toolbarNextBarButtonItemImage;
|
||||||
|
@property(nullable, nonatomic, strong) UIImage *toolbarDoneBarButtonItemImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Toolbar previous/next/done button text, If nothing is provided then system default 'UIBarButtonSystemItemDone' will be used.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) NSString *toolbarPreviousBarButtonItemText;
|
||||||
|
@property(nullable, nonatomic, strong) NSString *toolbarPreviousBarButtonItemAccessibilityLabel;
|
||||||
|
@property(nullable, nonatomic, strong) NSString *toolbarNextBarButtonItemText;
|
||||||
|
@property(nullable, nonatomic, strong) NSString *toolbarNextBarButtonItemAccessibilityLabel;
|
||||||
|
@property(nullable, nonatomic, strong) NSString *toolbarDoneBarButtonItemText;
|
||||||
|
@property(nullable, nonatomic, strong) NSString *toolbarDoneBarButtonItemAccessibilityLabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
If YES, then it add the textField's placeholder text on IQToolbar. Default is YES.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldShowToolbarPlaceholder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Placeholder Font. Default is nil.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIFont *placeholderFont;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Placeholder Color. Default is nil. Which means lightGray
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIColor *placeholderColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Placeholder Button Color when it's treated as button. Default is nil
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIColor *placeholderButtonColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Reload all toolbar buttons on the fly.
|
||||||
|
*/
|
||||||
|
- (void)reloadInputViews;
|
||||||
|
|
||||||
|
///---------------------------------------
|
||||||
|
/// @name UIKeyboard appearance overriding
|
||||||
|
///---------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Override the keyboardAppearance for all textField/textView. Default is NO.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL overrideKeyboardAppearance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
If overrideKeyboardAppearance is YES, then all the textField keyboardAppearance is set using this property.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) UIKeyboardAppearance keyboardAppearance;
|
||||||
|
|
||||||
|
///-----------------------------------------------------------
|
||||||
|
/// @name UITextField/UITextView Next/Previous/Resign handling
|
||||||
|
///-----------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Resigns Keyboard on touching outside of UITextField/View. Default is NO.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldResignOnTouchOutside;
|
||||||
|
|
||||||
|
/** TapGesture to resign keyboard on view's touch. It's a readonly property and exposed only for adding/removing dependencies if your added gesture does have collision with this one */
|
||||||
|
@property(nonnull, nonatomic, strong, readonly) UITapGestureRecognizer *resignFirstResponderGesture;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Resigns currently first responder field.
|
||||||
|
*/
|
||||||
|
- (BOOL)resignFirstResponder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns YES if can navigate to previous responder textField/textView, otherwise NO.
|
||||||
|
*/
|
||||||
|
@property (nonatomic, readonly) BOOL canGoPrevious;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns YES if can navigate to next responder textField/textView, otherwise NO.
|
||||||
|
*/
|
||||||
|
@property (nonatomic, readonly) BOOL canGoNext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Navigate to previous responder textField/textView.
|
||||||
|
*/
|
||||||
|
- (BOOL)goPrevious;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Navigate to next responder textField/textView.
|
||||||
|
*/
|
||||||
|
- (BOOL)goNext;
|
||||||
|
|
||||||
|
///-----------------------
|
||||||
|
/// @name UISound handling
|
||||||
|
///-----------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
If YES, then it plays inputClick sound on next/previous/done click. Default is YES.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL shouldPlayInputClicks;
|
||||||
|
|
||||||
|
///---------------------------
|
||||||
|
/// @name UIAnimation handling
|
||||||
|
///---------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
If YES, then calls 'setNeedsLayout' and 'layoutIfNeeded' on any frame update of to viewController's view.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) BOOL layoutIfNeededOnUpdate;
|
||||||
|
|
||||||
|
///---------------------------------------------
|
||||||
|
/// @name Class Level enabling/disabling methods
|
||||||
|
///---------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Disable distance handling within the scope of disabled distance handling viewControllers classes. Within this scope, 'enabled' property is ignored. Class should be kind of UIViewController. Default is [UITableViewController, UIAlertController, _UIAlertControllerTextFieldViewController].
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *disabledDistanceHandlingClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Enable distance handling within the scope of enabled distance handling viewControllers classes. Within this scope, 'enabled' property is ignored. Class should be kind of UIViewController. Default is [].
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *enabledDistanceHandlingClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Disable automatic toolbar creation within the scope of disabled toolbar viewControllers classes. Within this scope, 'enableAutoToolbar' property is ignored. Class should be kind of UIViewController. Default is [UIAlertController, _UIAlertControllerTextFieldViewController].
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *disabledToolbarClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Enable automatic toolbar creation within the scope of enabled toolbar viewControllers classes. Within this scope, 'enableAutoToolbar' property is ignored. Class should be kind of UIViewController. Default is [].
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *enabledToolbarClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allowed subclasses of UIView to add all inner textField, this will allow to navigate between textField contains in different superview. Class should be kind of UIView. Default is [UITableView, UICollectionView, IQPreviousNextView].
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *toolbarPreviousNextAllowedClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Disabled classes to ignore 'shouldResignOnTouchOutside' property, Class should be kind of UIViewController. Default is [UIAlertController, UIAlertControllerTextFieldViewController]
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *disabledTouchResignedClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Enabled classes to forcefully enable 'shouldResignOnTouchOutside' property. Class should be kind of UIViewController. Default is [].
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *enabledTouchResignedClasses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
if shouldResignOnTouchOutside is enabled then you can customize the behavior to not recognize gesture touches on some specific view subclasses. Class should be kind of UIView. Default is [UIControl, UINavigationBar]
|
||||||
|
*/
|
||||||
|
@property(nonatomic, strong, nonnull, readonly) NSMutableSet<Class> *touchResignedGestureIgnoreClasses;
|
||||||
|
|
||||||
|
///---------------------------------------------
|
||||||
|
/// @name Register for keyboard size events
|
||||||
|
///---------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
register an object to get keyboard size change events
|
||||||
|
*/
|
||||||
|
-(void)registerKeyboardSizeChangeWithIdentifier:(nonnull id<NSCopying>)identifier sizeHandler:(void (^_Nonnull)(CGSize size))sizeHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
unregister the object which was registered before
|
||||||
|
*/
|
||||||
|
-(void)unregisterKeyboardSizeChangeWithIdentifier:(nonnull id<NSCopying>)identifier;
|
||||||
|
|
||||||
|
///-------------------------------------------
|
||||||
|
/// @name Third Party Library support
|
||||||
|
/// Add TextField/TextView Notifications customized NSNotifications. For example while using YYTextView https://github.com/ibireme/YYText
|
||||||
|
///-------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add/Remove customized Notification for third party customized TextField/TextView. Please be aware that the NSNotification object must be identical to UITextField/UITextView NSNotification objects and customized TextField/TextView support must be identical to UITextField/UITextView.
|
||||||
|
@param didBeginEditingNotificationName This should be identical to UITextViewTextDidBeginEditingNotification
|
||||||
|
@param didEndEditingNotificationName This should be identical to UITextViewTextDidEndEditingNotification
|
||||||
|
*/
|
||||||
|
-(void)registerTextFieldViewClass:(nonnull Class)aClass
|
||||||
|
didBeginEditingNotificationName:(nonnull NSString *)didBeginEditingNotificationName
|
||||||
|
didEndEditingNotificationName:(nonnull NSString *)didEndEditingNotificationName;
|
||||||
|
-(void)unregisterTextFieldViewClass:(nonnull Class)aClass
|
||||||
|
didBeginEditingNotificationName:(nonnull NSString *)didBeginEditingNotificationName
|
||||||
|
didEndEditingNotificationName:(nonnull NSString *)didEndEditingNotificationName;
|
||||||
|
|
||||||
|
///----------------------------------------
|
||||||
|
/// @name Debugging & Developer options
|
||||||
|
///----------------------------------------
|
||||||
|
|
||||||
|
@property(nonatomic, assign) BOOL enableDebugging;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@warning Use these methods to completely enable/disable notifications registered by library internally. Please keep in mind that library is totally dependent on NSNotification of UITextField, UITextField, Keyboard etc. If you do unregisterAllNotifications then library will not work at all. You should only use below methods if you want to completely disable all library functions. You should use below methods at your own risk.
|
||||||
|
*/
|
||||||
|
-(void)registerAllNotifications;
|
||||||
|
-(void)unregisterAllNotifications;
|
||||||
|
|
||||||
|
///----------------------------------------
|
||||||
|
/// @name Must not be used for subclassing.
|
||||||
|
///----------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unavailable. Please use sharedManager method
|
||||||
|
*/
|
||||||
|
-(nonnull instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unavailable. Please use sharedManager method
|
||||||
|
*/
|
||||||
|
+ (nonnull instancetype)new NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
@end
|
||||||
2558
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardManager.m
generated
Normal file
2558
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardManager.m
generated
Normal file
File diff suppressed because it is too large
Load Diff
98
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardReturnKeyHandler.h
generated
Normal file
98
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardReturnKeyHandler.h
generated
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
//
|
||||||
|
// IQKeyboardReturnKeyHandler.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQKeyboardManagerConstants.h>
|
||||||
|
|
||||||
|
@class UITextField, UIView, UIViewController;
|
||||||
|
@protocol UITextFieldDelegate, UITextViewDelegate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Manages the return key to work like next/done in a view hierarchy.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQKeyboardReturnKeyHandler : NSObject
|
||||||
|
|
||||||
|
///----------------------
|
||||||
|
/// @name Initializations
|
||||||
|
///----------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add all the textFields available in UIViewController's view.
|
||||||
|
*/
|
||||||
|
-(nonnull instancetype)initWithViewController:(nullable UIViewController*)controller NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unavailable. Please use initWithViewController: or init method
|
||||||
|
*/
|
||||||
|
-(nonnull instancetype)initWithCoder:(nullable NSCoder *)aDecoder NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
///---------------
|
||||||
|
/// @name Settings
|
||||||
|
///---------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Delegate of textField/textView.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, weak) id<UITextFieldDelegate,UITextViewDelegate> delegate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the last textfield return key type. Default is UIReturnKeyDefault.
|
||||||
|
*/
|
||||||
|
@property(nonatomic, assign) UIReturnKeyType lastTextFieldReturnKeyType;
|
||||||
|
|
||||||
|
///----------------------------------------------
|
||||||
|
/// @name Registering/Unregistering textFieldView
|
||||||
|
///----------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Should pass UITextField/UITextView instance. Assign textFieldView delegate to self, change it's returnKeyType.
|
||||||
|
|
||||||
|
@param textFieldView UITextField/UITextView object to register.
|
||||||
|
*/
|
||||||
|
-(void)addTextFieldView:(nonnull UIView*)textFieldView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Should pass UITextField/UITextView instance. Restore it's textFieldView delegate and it's returnKeyType.
|
||||||
|
|
||||||
|
@param textFieldView UITextField/UITextView object to unregister.
|
||||||
|
*/
|
||||||
|
-(void)removeTextFieldView:(nonnull UIView*)textFieldView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add all the UITextField/UITextView responderView's.
|
||||||
|
|
||||||
|
@param view object to register all it's responder subviews.
|
||||||
|
*/
|
||||||
|
-(void)addResponderFromView:(nonnull UIView*)view;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove all the UITextField/UITextView responderView's.
|
||||||
|
|
||||||
|
@param view object to unregister all it's responder subviews.
|
||||||
|
*/
|
||||||
|
-(void)removeResponderFromView:(nonnull UIView*)view;
|
||||||
|
|
||||||
|
@end
|
||||||
733
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardReturnKeyHandler.m
generated
Normal file
733
Pods/IQKeyboardManager/IQKeyboardManager/IQKeyboardReturnKeyHandler.m
generated
Normal file
@@ -0,0 +1,733 @@
|
|||||||
|
//
|
||||||
|
// IQKeyboardReturnKeyHandler.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import "IQKeyboardReturnKeyHandler.h"
|
||||||
|
#import "IQKeyboardManager.h"
|
||||||
|
#import "IQUIView+Hierarchy.h"
|
||||||
|
#import "IQNSArray+Sort.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQTextFieldViewInfoModel : NSObject
|
||||||
|
|
||||||
|
@property(nullable, nonatomic, weak) UIView *textFieldView;
|
||||||
|
@property(nullable, nonatomic, weak) id<UITextFieldDelegate> textFieldDelegate;
|
||||||
|
@property(nullable, nonatomic, weak) id<UITextViewDelegate> textViewDelegate;
|
||||||
|
@property(nonatomic) UIReturnKeyType originalReturnKeyType;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQTextFieldViewInfoModel
|
||||||
|
|
||||||
|
-(instancetype)initWithTextFieldView:(UIView*)textFieldView textFieldDelegate:(id<UITextFieldDelegate>)textFieldDelegate textViewDelegate:(id<UITextViewDelegate>)textViewDelegate originalReturnKey:(UIReturnKeyType)returnKeyType
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
_textFieldView = textFieldView;
|
||||||
|
_textFieldDelegate = textFieldDelegate;
|
||||||
|
_textViewDelegate = textViewDelegate;
|
||||||
|
_originalReturnKeyType = returnKeyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQKeyboardReturnKeyHandler ()<UITextFieldDelegate,UITextViewDelegate>
|
||||||
|
|
||||||
|
-(void)updateReturnKeyTypeOnTextField:(UIView*)textField;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQKeyboardReturnKeyHandler
|
||||||
|
{
|
||||||
|
NSMutableSet<IQTextFieldViewInfoModel*> *textFieldInfoCache;
|
||||||
|
}
|
||||||
|
|
||||||
|
@synthesize lastTextFieldReturnKeyType = _lastTextFieldReturnKeyType;
|
||||||
|
@synthesize delegate = _delegate;
|
||||||
|
|
||||||
|
- (instancetype)init
|
||||||
|
{
|
||||||
|
self = [self initWithViewController:nil];
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(instancetype)initWithViewController:(nullable UIViewController*)controller
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
textFieldInfoCache = [[NSMutableSet alloc] init];
|
||||||
|
|
||||||
|
if (controller.view)
|
||||||
|
{
|
||||||
|
[self addResponderFromView:controller.view];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQTextFieldViewInfoModel*)textFieldViewCachedInfo:(UIView*)textField
|
||||||
|
{
|
||||||
|
for (IQTextFieldViewInfoModel *model in textFieldInfoCache)
|
||||||
|
if (model.textFieldView == textField) return model;
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Add/Remove TextFields
|
||||||
|
-(void)addResponderFromView:(UIView*)view
|
||||||
|
{
|
||||||
|
NSArray<UIView*> *textFields = [view deepResponderViews];
|
||||||
|
|
||||||
|
for (UIView *textField in textFields) [self addTextFieldView:textField];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)removeResponderFromView:(UIView*)view
|
||||||
|
{
|
||||||
|
NSArray<UIView*> *textFields = [view deepResponderViews];
|
||||||
|
|
||||||
|
for (UIView *textField in textFields) [self removeTextFieldView:textField];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)removeTextFieldView:(UIView*)view
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:view];
|
||||||
|
|
||||||
|
if (model)
|
||||||
|
{
|
||||||
|
UITextField *textField = (UITextField*)view;
|
||||||
|
|
||||||
|
if ([view respondsToSelector:@selector(setReturnKeyType:)])
|
||||||
|
{
|
||||||
|
textField.returnKeyType = model.originalReturnKeyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([view respondsToSelector:@selector(setDelegate:)])
|
||||||
|
{
|
||||||
|
textField.delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
[textFieldInfoCache removeObject:model];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)addTextFieldView:(UIView*)view
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [[IQTextFieldViewInfoModel alloc] initWithTextFieldView:view textFieldDelegate:nil textViewDelegate:nil originalReturnKey:UIReturnKeyDefault];
|
||||||
|
|
||||||
|
UITextField *textField = (UITextField*)view;
|
||||||
|
|
||||||
|
if ([view respondsToSelector:@selector(setReturnKeyType:)])
|
||||||
|
{
|
||||||
|
model.originalReturnKeyType = textField.returnKeyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([view respondsToSelector:@selector(setDelegate:)])
|
||||||
|
{
|
||||||
|
model.textFieldDelegate = textField.delegate;
|
||||||
|
[textField setDelegate:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
[textFieldInfoCache addObject:model];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)updateReturnKeyTypeOnTextField:(UIView*)textField
|
||||||
|
{
|
||||||
|
UIView *superConsideredView;
|
||||||
|
|
||||||
|
//If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347)
|
||||||
|
for (Class consideredClass in [[IQKeyboardManager sharedManager] toolbarPreviousNextAllowedClasses])
|
||||||
|
{
|
||||||
|
superConsideredView = [textField superviewOfClassType:consideredClass];
|
||||||
|
|
||||||
|
if (superConsideredView)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSArray<UIView*> *textFields = nil;
|
||||||
|
|
||||||
|
//If there is a tableView in view's hierarchy, then fetching all it's subview that responds. No sorting for tableView, it's by subView position.
|
||||||
|
if (superConsideredView) // // (Enhancement ID: #22)
|
||||||
|
{
|
||||||
|
textFields = [superConsideredView deepResponderViews];
|
||||||
|
}
|
||||||
|
//Otherwise fetching all the siblings
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textFields = [textField responderSiblings];
|
||||||
|
|
||||||
|
//Sorting textFields according to behavior
|
||||||
|
switch ([[IQKeyboardManager sharedManager] toolbarManageBehavior])
|
||||||
|
{
|
||||||
|
//If needs to sort it by tag
|
||||||
|
case IQAutoToolbarByTag:
|
||||||
|
textFields = [textFields sortedArrayByTag];
|
||||||
|
break;
|
||||||
|
|
||||||
|
//If needs to sort it by Position
|
||||||
|
case IQAutoToolbarByPosition:
|
||||||
|
textFields = [textFields sortedArrayByPosition];
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If it's the last textField in responder view, else next
|
||||||
|
[(UITextField*)textField setReturnKeyType:(([textFields lastObject] == textField) ? self.lastTextFieldReturnKeyType : UIReturnKeyNext)];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Goto next or Resign.
|
||||||
|
|
||||||
|
-(BOOL)goToNextResponderOrResign:(UIView*)textField
|
||||||
|
{
|
||||||
|
UIView *superConsideredView;
|
||||||
|
|
||||||
|
//If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347)
|
||||||
|
for (Class consideredClass in [[IQKeyboardManager sharedManager] toolbarPreviousNextAllowedClasses])
|
||||||
|
{
|
||||||
|
superConsideredView = [textField superviewOfClassType:consideredClass];
|
||||||
|
|
||||||
|
if (superConsideredView)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSArray<UIView*> *textFields = nil;
|
||||||
|
|
||||||
|
//If there is a tableView in view's hierarchy, then fetching all it's subview that responds. No sorting for tableView, it's by subView position.
|
||||||
|
if (superConsideredView) // // (Enhancement ID: #22)
|
||||||
|
{
|
||||||
|
textFields = [superConsideredView deepResponderViews];
|
||||||
|
}
|
||||||
|
//Otherwise fetching all the siblings
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textFields = [textField responderSiblings];
|
||||||
|
|
||||||
|
//Sorting textFields according to behavior
|
||||||
|
switch ([[IQKeyboardManager sharedManager] toolbarManageBehavior])
|
||||||
|
{
|
||||||
|
//If needs to sort it by tag
|
||||||
|
case IQAutoToolbarByTag:
|
||||||
|
textFields = [textFields sortedArrayByTag];
|
||||||
|
break;
|
||||||
|
|
||||||
|
//If needs to sort it by Position
|
||||||
|
case IQAutoToolbarByPosition:
|
||||||
|
textFields = [textFields sortedArrayByPosition];
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Getting index of current textField.
|
||||||
|
NSUInteger index = [textFields indexOfObject:textField];
|
||||||
|
|
||||||
|
//If it is not last textField. then it's next object becomeFirstResponder.
|
||||||
|
if (index != NSNotFound && index < textFields.count-1)
|
||||||
|
{
|
||||||
|
[textFields[index+1] becomeFirstResponder];
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[textField resignFirstResponder];
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - TextField delegate
|
||||||
|
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldShouldBeginEditing:)])
|
||||||
|
return [delegate textFieldShouldBeginEditing:textField];
|
||||||
|
else
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textFieldDidBeginEditing:(UITextField *)textField
|
||||||
|
{
|
||||||
|
[self updateReturnKeyTypeOnTextField:textField];
|
||||||
|
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldDidBeginEditing:)])
|
||||||
|
[delegate textFieldDidBeginEditing:textField];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldShouldEndEditing:)])
|
||||||
|
return [delegate textFieldShouldEndEditing:textField];
|
||||||
|
else
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textFieldDidEndEditing:(UITextField *)textField
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldDidEndEditing:)])
|
||||||
|
[delegate textFieldDidEndEditing:textField];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldDidEndEditing:reason:)])
|
||||||
|
[delegate textFieldDidEndEditing:textField reason:reason];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textField:shouldChangeCharactersInRange:replacementString:)])
|
||||||
|
return [delegate textField:textField shouldChangeCharactersInRange:range replacementString:string];
|
||||||
|
else
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160000
|
||||||
|
- (UIMenu *)textField:(UITextField *)textField editMenuForCharactersInRange:(NSRange)range suggestedActions:(NSArray<UIMenuElement *> *)suggestedActions NS_AVAILABLE_IOS(16_0);
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textField:editMenuForCharactersInRange:suggestedActions:)])
|
||||||
|
return [delegate textField:textField editMenuForCharactersInRange:range suggestedActions:suggestedActions];
|
||||||
|
else
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textField:(UITextField *)textField willPresentEditMenuWithAnimator:(id<UIEditMenuInteractionAnimating>)animator NS_AVAILABLE_IOS(16_0);
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textField:willPresentEditMenuWithAnimator:)])
|
||||||
|
[delegate textField:textField willPresentEditMenuWithAnimator:animator];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textField:(UITextField *)textField willDismissEditMenuWithAnimator:(id<UIEditMenuInteractionAnimating>)animator NS_AVAILABLE_IOS(16_0);
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textField:willDismissEditMenuWithAnimator:)])
|
||||||
|
[delegate textField:textField willDismissEditMenuWithAnimator:animator];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- (BOOL)textFieldShouldClear:(UITextField *)textField
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldShouldClear:)])
|
||||||
|
return [delegate textFieldShouldClear:textField];
|
||||||
|
else
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)textFieldShouldReturn:(UITextField *)textField
|
||||||
|
{
|
||||||
|
id<UITextFieldDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textField];
|
||||||
|
delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textFieldShouldReturn:)])
|
||||||
|
{
|
||||||
|
BOOL shouldReturn = [delegate textFieldShouldReturn:textField];
|
||||||
|
|
||||||
|
if (shouldReturn)
|
||||||
|
{
|
||||||
|
shouldReturn = [self goToNextResponderOrResign:textField];
|
||||||
|
}
|
||||||
|
|
||||||
|
return shouldReturn;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return [self goToNextResponderOrResign:textField];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - TextView delegate
|
||||||
|
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textViewShouldBeginEditing:)])
|
||||||
|
return [delegate textViewShouldBeginEditing:textView];
|
||||||
|
else
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textViewShouldEndEditing:)])
|
||||||
|
return [delegate textViewShouldEndEditing:textView];
|
||||||
|
else
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textViewDidBeginEditing:(UITextView *)textView
|
||||||
|
{
|
||||||
|
[self updateReturnKeyTypeOnTextField:textView];
|
||||||
|
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textViewDidBeginEditing:)])
|
||||||
|
[delegate textViewDidBeginEditing:textView];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textViewDidEndEditing:(UITextView *)textView
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textViewDidEndEditing:)])
|
||||||
|
[delegate textViewDidEndEditing:textView];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL shouldReturn = YES;
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:shouldChangeTextInRange:replacementText:)])
|
||||||
|
shouldReturn = [delegate textView:textView shouldChangeTextInRange:range replacementText:text];
|
||||||
|
|
||||||
|
if (shouldReturn && [text isEqualToString:@"\n"])
|
||||||
|
{
|
||||||
|
shouldReturn = [self goToNextResponderOrResign:textView];
|
||||||
|
}
|
||||||
|
|
||||||
|
return shouldReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textViewDidChange:(UITextView *)textView
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textViewDidChange:)])
|
||||||
|
[delegate textViewDidChange:textView];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textViewDidChangeSelection:(UITextView *)textView
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textViewDidChangeSelection:)])
|
||||||
|
[delegate textViewDidChangeSelection:textView];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:shouldInteractWithURL:inRange:interaction:)])
|
||||||
|
return [delegate textView:textView shouldInteractWithURL:URL inRange:characterRange interaction:interaction];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:shouldInteractWithTextAttachment:inRange:interaction:)])
|
||||||
|
return [delegate textView:textView shouldInteractWithTextAttachment:textAttachment inRange:characterRange interaction:interaction];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160000
|
||||||
|
-(UIMenu *)textView:(UITextView *)textView editMenuForTextInRange:(NSRange)range suggestedActions:(NSArray<UIMenuElement *> *)suggestedActions NS_AVAILABLE_IOS(16_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:editMenuForTextInRange:suggestedActions:)])
|
||||||
|
return [delegate textView:textView editMenuForTextInRange:range suggestedActions:suggestedActions];
|
||||||
|
else
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textView:(UITextView *)textView willPresentEditMenuWithAnimator:(id<UIEditMenuInteractionAnimating>)animator NS_AVAILABLE_IOS(16_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:willPresentEditMenuWithAnimator:)])
|
||||||
|
[delegate textView:textView willPresentEditMenuWithAnimator:animator];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textView:(UITextView *)textView willDismissEditMenuWithAnimator:(id<UIEditMenuInteractionAnimating>)animator NS_AVAILABLE_IOS(16_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:willDismissEditMenuWithAnimator:)])
|
||||||
|
[delegate textView:textView willDismissEditMenuWithAnimator:animator];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 170000
|
||||||
|
|
||||||
|
- (nullable UIAction *)textView:(UITextView *)textView primaryActionForTextItem:(UITextItem *)textItem defaultAction:(UIAction *)defaultAction NS_AVAILABLE_IOS(17_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:primaryActionForTextItem:defaultAction:)])
|
||||||
|
return [delegate textView:textView primaryActionForTextItem:textItem defaultAction:defaultAction];
|
||||||
|
else
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (nullable UITextItemMenuConfiguration *)textView:(UITextView *)textView menuConfigurationForTextItem:(UITextItem *)textItem defaultMenu:(UIMenu *)defaultMenu NS_AVAILABLE_IOS(17_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:menuConfigurationForTextItem:defaultMenu:)])
|
||||||
|
return [delegate textView:textView menuConfigurationForTextItem:textItem defaultMenu:defaultMenu];
|
||||||
|
else
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textView:(UITextView *)textView textItemMenuWillDisplayForTextItem:(UITextItem *)textItem animator:(id<UIContextMenuInteractionAnimating>)animator NS_AVAILABLE_IOS(17_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:textItemMenuWillDisplayForTextItem:animator:)])
|
||||||
|
[delegate textView:textView textItemMenuWillDisplayForTextItem:textItem animator:animator];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)textView:(UITextView *)textView textItemMenuWillEndForTextItem:(UITextItem *)textItem animator:(id<UIContextMenuInteractionAnimating>)animator NS_AVAILABLE_IOS(17_0);
|
||||||
|
{
|
||||||
|
id<UITextViewDelegate> delegate = self.delegate;
|
||||||
|
|
||||||
|
if (delegate == nil)
|
||||||
|
{
|
||||||
|
IQTextFieldViewInfoModel *model = [self textFieldViewCachedInfo:textView];
|
||||||
|
delegate = model.textViewDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([delegate respondsToSelector:@selector(textView:textItemMenuWillEndForTextItem:animator:)])
|
||||||
|
[delegate textView:textView textItemMenuWillEndForTextItem:textItem animator:animator];
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-(void)dealloc
|
||||||
|
{
|
||||||
|
for (IQTextFieldViewInfoModel *model in textFieldInfoCache)
|
||||||
|
{
|
||||||
|
UITextField *textField = (UITextField*)model.textFieldView;
|
||||||
|
|
||||||
|
if ([textField respondsToSelector:@selector(setReturnKeyType:)])
|
||||||
|
{
|
||||||
|
textField.returnKeyType = model.originalReturnKeyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([textField respondsToSelector:@selector(setDelegate:)])
|
||||||
|
{
|
||||||
|
textField.delegate = model.textFieldDelegate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[textFieldInfoCache removeAllObjects];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
54
Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.h
generated
Normal file
54
Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.h
generated
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
//
|
||||||
|
// IQTextView.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQKeyboardManagerConstants.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
UITextView with placeholder support
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQTextView : UITextView
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set textView's placeholder text. Default is nil.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic,copy) IBInspectable NSString *placeholder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set textView's placeholder attributed text. Default is nil.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic,copy) IBInspectable NSAttributedString *attributedPlaceholder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
To set textView's placeholder text color. Default is nil.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic,copy) IBInspectable UIColor *placeholderTextColor;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
229
Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.m
generated
Normal file
229
Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.m
generated
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
//
|
||||||
|
// IQTextView.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import "IQTextView.h"
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQTextView ()
|
||||||
|
|
||||||
|
@property(nullable, nonatomic, strong) UILabel *placeholderLabel;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQTextView
|
||||||
|
|
||||||
|
@synthesize placeholder = _placeholder;
|
||||||
|
@synthesize placeholderLabel = _placeholderLabel;
|
||||||
|
@synthesize placeholderTextColor = _placeholderTextColor;
|
||||||
|
|
||||||
|
-(void)initialize
|
||||||
|
{
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshPlaceholder) name:UITextViewTextDidChangeNotification object:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)dealloc
|
||||||
|
{
|
||||||
|
[_placeholderLabel removeFromSuperview];
|
||||||
|
_placeholderLabel = nil;
|
||||||
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)init
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
[self initialize];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)awakeFromNib
|
||||||
|
{
|
||||||
|
[super awakeFromNib];
|
||||||
|
[self initialize];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)refreshPlaceholder
|
||||||
|
{
|
||||||
|
if([[self text] length] || [[self attributedText] length])
|
||||||
|
{
|
||||||
|
if (self.placeholderLabel.alpha != 0)
|
||||||
|
{
|
||||||
|
[self.placeholderLabel setAlpha:0];
|
||||||
|
[self setNeedsLayout];
|
||||||
|
[self layoutIfNeeded];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(self.placeholderLabel.alpha != 1)
|
||||||
|
{
|
||||||
|
[self.placeholderLabel setAlpha:1];
|
||||||
|
[self setNeedsLayout];
|
||||||
|
[self layoutIfNeeded];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setText:(NSString *)text
|
||||||
|
{
|
||||||
|
[super setText:text];
|
||||||
|
[self refreshPlaceholder];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setAttributedText:(NSAttributedString *)attributedText
|
||||||
|
{
|
||||||
|
[super setAttributedText:attributedText];
|
||||||
|
[self refreshPlaceholder];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setFont:(UIFont *)font
|
||||||
|
{
|
||||||
|
[super setFont:font];
|
||||||
|
self.placeholderLabel.font = self.font;
|
||||||
|
|
||||||
|
[self setNeedsLayout];
|
||||||
|
[self layoutIfNeeded];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setTextAlignment:(NSTextAlignment)textAlignment
|
||||||
|
{
|
||||||
|
[super setTextAlignment:textAlignment];
|
||||||
|
self.placeholderLabel.textAlignment = textAlignment;
|
||||||
|
|
||||||
|
[self setNeedsLayout];
|
||||||
|
[self layoutIfNeeded];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)layoutSubviews
|
||||||
|
{
|
||||||
|
[super layoutSubviews];
|
||||||
|
self.placeholderLabel.frame = [self placeholderExpectedFrame];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setPlaceholder:(NSString *)placeholder
|
||||||
|
{
|
||||||
|
_placeholder = placeholder;
|
||||||
|
|
||||||
|
self.placeholderLabel.text = placeholder;
|
||||||
|
[self refreshPlaceholder];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setAttributedPlaceholder:(NSAttributedString *)attributedPlaceholder
|
||||||
|
{
|
||||||
|
_attributedPlaceholder = attributedPlaceholder;
|
||||||
|
|
||||||
|
self.placeholderLabel.attributedText = attributedPlaceholder;
|
||||||
|
[self refreshPlaceholder];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setPlaceholderTextColor:(UIColor*)placeholderTextColor
|
||||||
|
{
|
||||||
|
_placeholderTextColor = placeholderTextColor;
|
||||||
|
self.placeholderLabel.textColor = placeholderTextColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(UIEdgeInsets)placeholderInsets
|
||||||
|
{
|
||||||
|
return UIEdgeInsetsMake(self.textContainerInset.top, self.textContainerInset.left + self.textContainer.lineFragmentPadding, self.textContainerInset.bottom, self.textContainerInset.right + self.textContainer.lineFragmentPadding);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(CGRect)placeholderExpectedFrame
|
||||||
|
{
|
||||||
|
UIEdgeInsets placeholderInsets = [self placeholderInsets];
|
||||||
|
CGFloat maxWidth = CGRectGetWidth(self.frame)-placeholderInsets.left-placeholderInsets.right;
|
||||||
|
|
||||||
|
CGSize expectedSize = [self.placeholderLabel sizeThatFits:CGSizeMake(maxWidth, CGRectGetHeight(self.frame)-placeholderInsets.top-placeholderInsets.bottom)];
|
||||||
|
|
||||||
|
return CGRectMake(placeholderInsets.left, placeholderInsets.top, maxWidth, expectedSize.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(UILabel*)placeholderLabel
|
||||||
|
{
|
||||||
|
if (_placeholderLabel == nil)
|
||||||
|
{
|
||||||
|
_placeholderLabel = [[UILabel alloc] init];
|
||||||
|
_placeholderLabel.autoresizingMask = (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);
|
||||||
|
_placeholderLabel.lineBreakMode = NSLineBreakByWordWrapping;
|
||||||
|
_placeholderLabel.numberOfLines = 0;
|
||||||
|
_placeholderLabel.font = self.font;
|
||||||
|
_placeholderLabel.textAlignment = self.textAlignment;
|
||||||
|
_placeholderLabel.backgroundColor = [UIColor clearColor];
|
||||||
|
_placeholderLabel.isAccessibilityElement = NO;
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
|
||||||
|
if (@available(iOS 13.0, *))
|
||||||
|
{
|
||||||
|
_placeholderLabel.textColor = [UIColor placeholderTextColor];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
_placeholderLabel.textColor = [UIColor lightTextColor];
|
||||||
|
}
|
||||||
|
_placeholderLabel.alpha = 0;
|
||||||
|
[self addSubview:_placeholderLabel];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _placeholderLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
//When any text changes on textField, the delegate getter is called. At this time we refresh the textView's placeholder
|
||||||
|
-(id<UITextViewDelegate>)delegate
|
||||||
|
{
|
||||||
|
[self refreshPlaceholder];
|
||||||
|
return [super delegate];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(CGSize)intrinsicContentSize
|
||||||
|
{
|
||||||
|
if (self.hasText)
|
||||||
|
{
|
||||||
|
return [super intrinsicContentSize];
|
||||||
|
}
|
||||||
|
|
||||||
|
UIEdgeInsets placeholderInsets = [self placeholderInsets];
|
||||||
|
CGSize newSize = [super intrinsicContentSize];
|
||||||
|
|
||||||
|
newSize.height = [self placeholderExpectedFrame].size.height + placeholderInsets.top + placeholderInsets.bottom;
|
||||||
|
|
||||||
|
return newSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CGRect)caretRectForPosition:(UITextPosition *)position {
|
||||||
|
|
||||||
|
CGRect originalRect = [super caretRectForPosition:position];
|
||||||
|
// When placeholder is visible and text alignment is centered
|
||||||
|
if (_placeholderLabel.alpha == 1 && self.textAlignment == NSTextAlignmentCenter) {
|
||||||
|
// Calculate the width of the placeholder text
|
||||||
|
CGSize textSize = [_placeholderLabel.text sizeWithAttributes:@{NSFontAttributeName:_placeholderLabel.font}];
|
||||||
|
// Calculate the starting x position of the centered placeholder text
|
||||||
|
CGFloat centeredTextX = (self.bounds.size.width - textSize.width) / 2;
|
||||||
|
// Update the caret position to match the starting x position of the centered text
|
||||||
|
originalRect.origin.x = centeredTextX;
|
||||||
|
}
|
||||||
|
|
||||||
|
return originalRect;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
52
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQBarButtonItem.h
generated
Normal file
52
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQBarButtonItem.h
generated
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
//
|
||||||
|
// IQBarButtonItem.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
@class NSInvocation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
IQBarButtonItem used for IQToolbar.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQBarButtonItem : UIBarButtonItem
|
||||||
|
|
||||||
|
/**
|
||||||
|
Boolean to know if it's a system item or custom item
|
||||||
|
*/
|
||||||
|
@property (nonatomic, readonly) BOOL isSystemItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Additional target & action to do get callback action. Note that setting custom target & selector doesn't affect native functionality, this is just an additional target to get a callback.
|
||||||
|
|
||||||
|
@param target Target object.
|
||||||
|
@param action Target Selector.
|
||||||
|
*/
|
||||||
|
-(void)setTarget:(nullable id)target action:(nullable SEL)action;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Customized Invocation to be called when button is pressed. invocation is internally created using setTarget:action: method.
|
||||||
|
*/
|
||||||
|
@property (nullable, strong, nonatomic) NSInvocation *invocation;
|
||||||
|
|
||||||
|
@end
|
||||||
119
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQBarButtonItem.m
generated
Normal file
119
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQBarButtonItem.m
generated
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
//
|
||||||
|
// IQBarButtonItem.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import "IQBarButtonItem.h"
|
||||||
|
#import "IQKeyboardManagerConstantsInternal.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQBarButtonItem
|
||||||
|
|
||||||
|
-(void)initialize
|
||||||
|
{
|
||||||
|
NSArray <NSNumber*> *states = @[@(UIControlStateNormal),@(UIControlStateHighlighted),@(UIControlStateDisabled),@(UIControlStateFocused)];
|
||||||
|
|
||||||
|
for (NSNumber *state in states)
|
||||||
|
{
|
||||||
|
UIControlState controlState = [state unsignedIntegerValue];
|
||||||
|
|
||||||
|
[self setBackgroundImage:[UIImage new] forState:controlState barMetrics:UIBarMetricsDefault];
|
||||||
|
[self setBackgroundImage:[UIImage new] forState:controlState style:UIBarButtonItemStylePlain barMetrics:UIBarMetricsDefault];
|
||||||
|
[self setBackButtonBackgroundImage:[UIImage new] forState:controlState barMetrics:UIBarMetricsDefault];
|
||||||
|
}
|
||||||
|
|
||||||
|
[self setTitlePositionAdjustment:UIOffsetZero forBarMetrics:UIBarMetricsDefault];
|
||||||
|
[self setBackgroundVerticalPositionAdjustment:0 forBarMetrics:UIBarMetricsDefault];
|
||||||
|
[self setBackButtonBackgroundVerticalPositionAdjustment:0 forBarMetrics:UIBarMetricsDefault];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)init
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
[self initialize];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithCoder:(NSCoder *)coder
|
||||||
|
{
|
||||||
|
self = [super initWithCoder: coder];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
[self initialize];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setTintColor:(UIColor *)tintColor
|
||||||
|
{
|
||||||
|
[super setTintColor:tintColor];
|
||||||
|
|
||||||
|
//titleTextAttributes tweak is to overcome an issue comes with iOS11 where appearanceProxy set for NSForegroundColorAttributeName and bar button texts start appearing in appearance proxy color
|
||||||
|
NSMutableDictionary *textAttributes = [[self titleTextAttributesForState:UIControlStateNormal] mutableCopy]?:[NSMutableDictionary new];
|
||||||
|
|
||||||
|
textAttributes[NSForegroundColorAttributeName] = tintColor;
|
||||||
|
|
||||||
|
[self setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(nullable id)target action:(nullable SEL)action
|
||||||
|
{
|
||||||
|
self = [super initWithBarButtonSystemItem:systemItem target:target action:action];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
_isSystemItem = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(void)setTarget:(nullable id)target action:(nullable SEL)action
|
||||||
|
{
|
||||||
|
NSInvocation *invocation = nil;
|
||||||
|
|
||||||
|
if (target && action)
|
||||||
|
{
|
||||||
|
invocation = [NSInvocation invocationWithMethodSignature:[target methodSignatureForSelector:action]];
|
||||||
|
invocation.target = target;
|
||||||
|
invocation.selector = action;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.invocation = invocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)dealloc
|
||||||
|
{
|
||||||
|
self.target = nil;
|
||||||
|
self.invocation = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
31
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQPreviousNextView.h
generated
Normal file
31
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQPreviousNextView.h
generated
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
//
|
||||||
|
// IQPreviousNextView.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
/**
|
||||||
|
If you need to enable previous/next toolbar button with some complex hierarchy where your textFields are not in same view, then make the top view as IQPreviousNextView.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQPreviousNextView : UIView
|
||||||
|
|
||||||
|
@end
|
||||||
29
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQPreviousNextView.m
generated
Normal file
29
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQPreviousNextView.m
generated
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// IQPreviousNextView.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import "IQPreviousNextView.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQPreviousNextView
|
||||||
|
|
||||||
|
@end
|
||||||
73
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQTitleBarButtonItem.h
generated
Normal file
73
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQTitleBarButtonItem.h
generated
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// IQTitleBarButtonItem.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQKeyboardManagerConstants.h>
|
||||||
|
#import <IQKeyboardManager/IQBarButtonItem.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
BarButtonItem with title text.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQTitleBarButtonItem : IQBarButtonItem
|
||||||
|
|
||||||
|
/**
|
||||||
|
Font to be used in bar button. Default is (system font 12.0 bold).
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIFont *titleFont;
|
||||||
|
|
||||||
|
/**
|
||||||
|
titleColor to be used for displaying button text when displaying title (disabled state).
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIColor *titleColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
selectableTitleColor to be used for displaying button text when button is enabled.
|
||||||
|
*/
|
||||||
|
@property(nullable, nonatomic, strong) UIColor *selectableTitleColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize with frame and title.
|
||||||
|
|
||||||
|
@param title Title of barButtonItem.
|
||||||
|
*/
|
||||||
|
-(nonnull instancetype)initWithTitle:(nullable NSString *)title NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unavailable. Please use initWithFrame:title: method
|
||||||
|
*/
|
||||||
|
-(nonnull instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unavailable. Please use initWithFrame:title: method
|
||||||
|
*/
|
||||||
|
-(nonnull instancetype)initWithCoder:(nullable NSCoder *)aDecoder NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unavailable. Please use initWithFrame:title: method
|
||||||
|
*/
|
||||||
|
+ (nonnull instancetype)new NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
@end
|
||||||
183
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQTitleBarButtonItem.m
generated
Normal file
183
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQTitleBarButtonItem.m
generated
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
//
|
||||||
|
// IQTitleBarButtonItem.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import "IQTitleBarButtonItem.h"
|
||||||
|
#import "IQKeyboardManagerConstants.h"
|
||||||
|
#import "IQKeyboardManagerConstantsInternal.h"
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQTitleBarButtonItem ()
|
||||||
|
|
||||||
|
@property(nullable, nonatomic, strong) UIView *titleView;
|
||||||
|
@property(nullable, nonatomic, strong) UIButton *titleButton;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQTitleBarButtonItem
|
||||||
|
|
||||||
|
-(nonnull instancetype)initWithTitle:(nullable NSString *)title
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
_titleView = [[UIView alloc] init];
|
||||||
|
_titleView.backgroundColor = [UIColor clearColor];
|
||||||
|
|
||||||
|
_titleButton = [UIButton buttonWithType:UIButtonTypeSystem];
|
||||||
|
_titleButton.enabled = NO;
|
||||||
|
_titleButton.titleLabel.numberOfLines = 3;
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
|
||||||
|
if (@available(iOS 13.0, *))
|
||||||
|
{
|
||||||
|
[_titleButton setTitleColor:[UIColor systemBlueColor] forState:UIControlStateNormal];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
[_titleButton setTitleColor:[UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:1.0] forState:UIControlStateNormal];
|
||||||
|
}
|
||||||
|
[_titleButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
|
||||||
|
[_titleButton setBackgroundColor:[UIColor clearColor]];
|
||||||
|
[_titleButton.titleLabel setTextAlignment:NSTextAlignmentCenter];
|
||||||
|
[self setTitle:title];
|
||||||
|
[self setTitleFont:[UIFont systemFontOfSize:13.0]];
|
||||||
|
[_titleView addSubview:_titleButton];
|
||||||
|
|
||||||
|
CGFloat layoutDefaultLowPriority = UILayoutPriorityDefaultLow-1;
|
||||||
|
CGFloat layoutDefaultHighPriority = UILayoutPriorityDefaultHigh-1;
|
||||||
|
|
||||||
|
_titleView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
[_titleView setContentHuggingPriority:layoutDefaultLowPriority forAxis:UILayoutConstraintAxisVertical];
|
||||||
|
[_titleView setContentHuggingPriority:layoutDefaultLowPriority forAxis:UILayoutConstraintAxisHorizontal];
|
||||||
|
[_titleView setContentCompressionResistancePriority:layoutDefaultHighPriority forAxis:UILayoutConstraintAxisVertical];
|
||||||
|
[_titleView setContentCompressionResistancePriority:layoutDefaultHighPriority forAxis:UILayoutConstraintAxisHorizontal];
|
||||||
|
|
||||||
|
_titleButton.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
[_titleButton setContentHuggingPriority:layoutDefaultLowPriority forAxis:UILayoutConstraintAxisVertical];
|
||||||
|
[_titleButton setContentHuggingPriority:layoutDefaultLowPriority forAxis:UILayoutConstraintAxisHorizontal];
|
||||||
|
[_titleButton setContentCompressionResistancePriority:layoutDefaultHighPriority forAxis:UILayoutConstraintAxisVertical];
|
||||||
|
[_titleButton setContentCompressionResistancePriority:layoutDefaultHighPriority forAxis:UILayoutConstraintAxisHorizontal];
|
||||||
|
|
||||||
|
NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:_titleButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:_titleView attribute:NSLayoutAttributeTop multiplier:1 constant:0];
|
||||||
|
NSLayoutConstraint *bottom = [NSLayoutConstraint constraintWithItem:_titleButton attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:_titleView attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
|
||||||
|
NSLayoutConstraint *leading = [NSLayoutConstraint constraintWithItem:_titleButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:_titleView attribute:NSLayoutAttributeLeading multiplier:1 constant:0];
|
||||||
|
NSLayoutConstraint *trailing = [NSLayoutConstraint constraintWithItem:_titleButton attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:_titleView attribute:NSLayoutAttributeTrailing multiplier:1 constant:0];
|
||||||
|
[_titleView addConstraints:@[top,bottom, leading, trailing]];
|
||||||
|
|
||||||
|
self.customView = _titleView;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setTitleFont:(UIFont *)titleFont
|
||||||
|
{
|
||||||
|
_titleFont = titleFont;
|
||||||
|
|
||||||
|
if (titleFont)
|
||||||
|
{
|
||||||
|
_titleButton.titleLabel.font = titleFont;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_titleButton.titleLabel.font = [UIFont systemFontOfSize:13];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setTitle:(NSString *)title
|
||||||
|
{
|
||||||
|
[super setTitle:title];
|
||||||
|
[_titleButton setTitle:title forState:UIControlStateNormal];
|
||||||
|
[self updateAccessibility];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setTitleColor:(UIColor*)titleColor
|
||||||
|
{
|
||||||
|
_titleColor = titleColor;
|
||||||
|
[_titleButton setTitleColor:_titleColor?:[UIColor lightGrayColor] forState:UIControlStateDisabled];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setSelectableTitleColor:(UIColor*)selectableTitleColor
|
||||||
|
{
|
||||||
|
_selectableTitleColor = selectableTitleColor;
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
|
||||||
|
if (@available(iOS 13.0, *))
|
||||||
|
{
|
||||||
|
[_titleButton setTitleColor:_selectableTitleColor?:[UIColor systemBlueColor] forState:UIControlStateNormal];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
[_titleButton setTitleColor:_selectableTitleColor?:[UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:1.0] forState:UIControlStateNormal];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setInvocation:(NSInvocation *)invocation
|
||||||
|
{
|
||||||
|
[super setInvocation:invocation];
|
||||||
|
|
||||||
|
if (invocation.target == nil || invocation.selector == NULL)
|
||||||
|
{
|
||||||
|
self.enabled = NO;
|
||||||
|
_titleButton.enabled = NO;
|
||||||
|
[_titleButton removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.enabled = YES;
|
||||||
|
_titleButton.enabled = YES;
|
||||||
|
[_titleButton addTarget:invocation.target action:invocation.selector forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)updateAccessibility
|
||||||
|
{
|
||||||
|
if (self.title == nil || self.title.length == 0)
|
||||||
|
{
|
||||||
|
self.isAccessibilityElement = NO;
|
||||||
|
self.accessibilityTraits = UIAccessibilityTraitNone;
|
||||||
|
}
|
||||||
|
else if (self.titleButton.isEnabled)
|
||||||
|
{
|
||||||
|
self.isAccessibilityElement = YES;
|
||||||
|
self.accessibilityTraits = UIAccessibilityTraitButton;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.isAccessibilityElement = YES;
|
||||||
|
self.accessibilityTraits = UIAccessibilityTraitStaticText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)dealloc
|
||||||
|
{
|
||||||
|
self.customView = nil;
|
||||||
|
[_titleButton removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
_titleView = nil;
|
||||||
|
_titleButton = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
61
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQToolbar.h
generated
Normal file
61
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQToolbar.h
generated
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
//
|
||||||
|
// IQToolbar.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQTitleBarButtonItem.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
IQToolbar for IQKeyboardManager.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQToolbar : UIToolbar <UIInputViewAudioFeedback>
|
||||||
|
|
||||||
|
/**
|
||||||
|
Previous bar button of toolbar.
|
||||||
|
*/
|
||||||
|
@property(nonnull, nonatomic, strong) IQBarButtonItem *previousBarButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Next bar button of toolbar.
|
||||||
|
*/
|
||||||
|
@property(nonnull, nonatomic, strong) IQBarButtonItem *nextBarButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Title bar button of toolbar.
|
||||||
|
*/
|
||||||
|
@property(nonnull, nonatomic, strong, readonly) IQTitleBarButtonItem *titleBarButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Done bar button of toolbar.
|
||||||
|
*/
|
||||||
|
@property(nonnull, nonatomic, strong) IQBarButtonItem *doneBarButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fixed space bar button of toolbar.
|
||||||
|
*/
|
||||||
|
@property(nonnull, nonatomic, strong) IQBarButtonItem *fixedSpaceBarButton;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
158
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQToolbar.m
generated
Normal file
158
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQToolbar.m
generated
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
//
|
||||||
|
// IQToolbar.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import "IQToolbar.h"
|
||||||
|
#import "IQKeyboardManagerConstantsInternal.h"
|
||||||
|
#import "IQUIView+Hierarchy.h"
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQToolbar
|
||||||
|
@synthesize previousBarButton = _previousBarButton;
|
||||||
|
@synthesize nextBarButton = _nextBarButton;
|
||||||
|
@synthesize titleBarButton = _titleBarButton;
|
||||||
|
@synthesize doneBarButton = _doneBarButton;
|
||||||
|
@synthesize fixedSpaceBarButton = _fixedSpaceBarButton;
|
||||||
|
|
||||||
|
-(void)initialize
|
||||||
|
{
|
||||||
|
[self sizeToFit];
|
||||||
|
self.autoresizingMask = UIViewAutoresizingFlexibleWidth;// | UIViewAutoresizingFlexibleHeight;
|
||||||
|
self.translucent = YES;
|
||||||
|
self.barTintColor = nil;
|
||||||
|
|
||||||
|
NSArray <NSNumber*> *positions = @[@(UIBarPositionAny),@(UIBarPositionBottom),@(UIBarPositionTop),@(UIBarPositionTopAttached)];
|
||||||
|
|
||||||
|
for (NSNumber *position in positions)
|
||||||
|
{
|
||||||
|
UIToolbarPosition toolbarPosition = [position unsignedIntegerValue];
|
||||||
|
|
||||||
|
[self setBackgroundImage:nil forToolbarPosition:toolbarPosition barMetrics:UIBarMetricsDefault];
|
||||||
|
[self setShadowImage:nil forToolbarPosition:toolbarPosition];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithFrame:(CGRect)frame
|
||||||
|
{
|
||||||
|
self = [super initWithFrame:frame];
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
[self initialize];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithCoder:(NSCoder *)coder
|
||||||
|
{
|
||||||
|
self = [super initWithCoder:coder];
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
[self initialize];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)dealloc
|
||||||
|
{
|
||||||
|
self.items = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQBarButtonItem *)previousBarButton
|
||||||
|
{
|
||||||
|
if (_previousBarButton == nil)
|
||||||
|
{
|
||||||
|
_previousBarButton = [[IQBarButtonItem alloc] initWithImage:nil style:UIBarButtonItemStylePlain target:nil action:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _previousBarButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQBarButtonItem *)nextBarButton
|
||||||
|
{
|
||||||
|
if (_nextBarButton == nil)
|
||||||
|
{
|
||||||
|
_nextBarButton = [[IQBarButtonItem alloc] initWithImage:nil style:UIBarButtonItemStylePlain target:nil action:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _nextBarButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQTitleBarButtonItem *)titleBarButton
|
||||||
|
{
|
||||||
|
if (_titleBarButton == nil)
|
||||||
|
{
|
||||||
|
_titleBarButton = [[IQTitleBarButtonItem alloc] initWithTitle:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _titleBarButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQBarButtonItem *)doneBarButton
|
||||||
|
{
|
||||||
|
if (_doneBarButton == nil)
|
||||||
|
{
|
||||||
|
_doneBarButton = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _doneBarButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IQBarButtonItem *)fixedSpaceBarButton
|
||||||
|
{
|
||||||
|
if (_fixedSpaceBarButton == nil)
|
||||||
|
{
|
||||||
|
_fixedSpaceBarButton = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
|
||||||
|
[_fixedSpaceBarButton setWidth:6];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _fixedSpaceBarButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(CGSize)sizeThatFits:(CGSize)size
|
||||||
|
{
|
||||||
|
CGSize sizeThatFit = [super sizeThatFits:size];
|
||||||
|
|
||||||
|
sizeThatFit.height = 44;
|
||||||
|
|
||||||
|
return sizeThatFit;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setTintColor:(UIColor *)tintColor
|
||||||
|
{
|
||||||
|
[super setTintColor:tintColor];
|
||||||
|
|
||||||
|
for (UIBarButtonItem *item in self.items)
|
||||||
|
{
|
||||||
|
[item setTintColor:tintColor];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - UIInputViewAudioFeedback delegate
|
||||||
|
- (BOOL) enableInputClicksWhenVisible
|
||||||
|
{
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
145
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.h
generated
Normal file
145
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.h
generated
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
//
|
||||||
|
// IQUIView+IQKeyboardToolbar.h
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#import <IQKeyboardManager/IQToolbar.h>
|
||||||
|
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface IQBarButtonItemConfiguration : NSObject
|
||||||
|
|
||||||
|
-(nonnull instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)barButtonSystemItem action:(nullable SEL)action;
|
||||||
|
-(nonnull instancetype)initWithImage:(nonnull UIImage*)image action:(nullable SEL)action;
|
||||||
|
-(nonnull instancetype)initWithTitle:(nonnull NSString*)title action:(nullable SEL)action;
|
||||||
|
|
||||||
|
@property (readonly, nonatomic) UIBarButtonSystemItem barButtonSystemItem; //System Item to be used to instantiate bar button
|
||||||
|
@property (readonly, nonatomic, nullable) UIImage *image; //Image to show on bar button item if it's not a system item.
|
||||||
|
@property (readonly, nonatomic, nullable) NSString *title; //Title to show on bar button item if it's not a system item.
|
||||||
|
@property (readonly, nonatomic, nullable) SEL action; //action for bar button item. Usually 'doneAction:(IQBarButtonItem*)item'.
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UIImage (IQKeyboardToolbarNextPreviousImage)
|
||||||
|
|
||||||
|
+(nullable UIImage*)keyboardPreviousImage;
|
||||||
|
+(nullable UIImage*)keyboardNextImage;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
/**
|
||||||
|
UIView category methods to add IQToolbar on UIKeyboard.
|
||||||
|
*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@interface UIView (IQToolbarAddition)
|
||||||
|
|
||||||
|
///-------------------------
|
||||||
|
/// @name Toolbar Title
|
||||||
|
///-------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
IQToolbar references for better customization control.
|
||||||
|
*/
|
||||||
|
@property (readonly, nonatomic, nonnull) IQToolbar *keyboardToolbar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
If `shouldHideToolbarPlaceholder` is YES, then title will not be added to the toolbar. Default to NO.
|
||||||
|
*/
|
||||||
|
@property (assign, nonatomic) BOOL shouldHideToolbarPlaceholder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
`toolbarPlaceholder` to override default `placeholder` text when drawing text on toolbar.
|
||||||
|
*/
|
||||||
|
@property (nullable, strong, nonatomic) NSString* toolbarPlaceholder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
`drawingToolbarPlaceholder` will be actual text used to draw on toolbar. This would either `placeholder` or `toolbarPlaceholder`.
|
||||||
|
*/
|
||||||
|
@property (nullable, strong, nonatomic, readonly) NSString* drawingToolbarPlaceholder;
|
||||||
|
|
||||||
|
///-------------
|
||||||
|
/// MARK: Common
|
||||||
|
///-------------
|
||||||
|
|
||||||
|
- (void)addKeyboardToolbarWithTarget:(nullable id)target titleText:(nullable NSString*)titleText rightBarButtonConfiguration:(nullable IQBarButtonItemConfiguration*)rightBarButtonConfiguration previousBarButtonConfiguration:(nullable IQBarButtonItemConfiguration*)previousBarButtonConfiguration nextBarButtonConfiguration:(nullable IQBarButtonItemConfiguration*)nextBarButtonConfiguration;
|
||||||
|
|
||||||
|
///------------
|
||||||
|
/// @name Done
|
||||||
|
///------------
|
||||||
|
|
||||||
|
- (void)addDoneOnKeyboardWithTarget:(nullable id)target action:(nullable SEL)action;
|
||||||
|
- (void)addDoneOnKeyboardWithTarget:(nullable id)target action:(nullable SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addDoneOnKeyboardWithTarget:(nullable id)target action:(nullable SEL)action titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
///------------
|
||||||
|
/// @name Right
|
||||||
|
///------------
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithText:(nullable NSString*)text target:(nullable id)target action:(nullable SEL)action;
|
||||||
|
- (void)addRightButtonOnKeyboardWithText:(nullable NSString*)text target:(nullable id)target action:(nullable SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addRightButtonOnKeyboardWithText:(nullable NSString*)text target:(nullable id)target action:(nullable SEL)action titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithImage:(nullable UIImage*)image target:(nullable id)target action:(nullable SEL)action;
|
||||||
|
- (void)addRightButtonOnKeyboardWithImage:(nullable UIImage*)image target:(nullable id)target action:(nullable SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addRightButtonOnKeyboardWithImage:(nullable UIImage*)image target:(nullable id)target action:(nullable SEL)action titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
///------------------
|
||||||
|
/// @name Cancel/Done
|
||||||
|
///------------------
|
||||||
|
|
||||||
|
- (void)addCancelDoneOnKeyboardWithTarget:(nullable id)target cancelAction:(nullable SEL)cancelAction doneAction:(nullable SEL)doneAction;
|
||||||
|
- (void)addCancelDoneOnKeyboardWithTarget:(nullable id)target cancelAction:(nullable SEL)cancelAction doneAction:(nullable SEL)doneAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addCancelDoneOnKeyboardWithTarget:(nullable id)target cancelAction:(nullable SEL)cancelAction doneAction:(nullable SEL)doneAction titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
///-----------------
|
||||||
|
/// @name Right/Left
|
||||||
|
///-----------------
|
||||||
|
|
||||||
|
- (void)addLeftRightOnKeyboardWithTarget:(nullable id)target leftButtonTitle:(nullable NSString*)leftButtonTitle rightButtonTitle:(nullable NSString*)rightButtonTitle leftButtonAction:(nullable SEL)leftButtonAction rightButtonAction:(nullable SEL)rightButtonAction;
|
||||||
|
- (void)addLeftRightOnKeyboardWithTarget:(nullable id)target leftButtonTitle:(nullable NSString*)leftButtonTitle rightButtonTitle:(nullable NSString*)rightButtonTitle leftButtonAction:(nullable SEL)leftButtonAction rightButtonAction:(nullable SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addLeftRightOnKeyboardWithTarget:(nullable id)target leftButtonTitle:(nullable NSString*)leftButtonTitle rightButtonTitle:(nullable NSString*)rightButtonTitle leftButtonAction:(nullable SEL)leftButtonAction rightButtonAction:(nullable SEL)rightButtonAction titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
///-------------------------
|
||||||
|
/// @name Previous/Next/Done
|
||||||
|
///-------------------------
|
||||||
|
|
||||||
|
- (void)addPreviousNextDoneOnKeyboardWithTarget:(nullable id)target previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction doneAction:(nullable SEL)doneAction;
|
||||||
|
- (void)addPreviousNextDoneOnKeyboardWithTarget:(nullable id)target previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction doneAction:(nullable SEL)doneAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addPreviousNextDoneOnKeyboardWithTarget:(nullable id)target previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction doneAction:(nullable SEL)doneAction titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
///--------------------------
|
||||||
|
/// @name Previous/Next/Right
|
||||||
|
///--------------------------
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonTitle:(nullable NSString*)rightButtonTitle previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction;
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonTitle:(nullable NSString*)rightButtonTitle previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonTitle:(nullable NSString*)rightButtonTitle previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonImage:(nullable UIImage*)rightButtonImage previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction;
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonImage:(nullable UIImage*)rightButtonImage previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder;
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonImage:(nullable UIImage*)rightButtonImage previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction titleText:(nullable NSString*)titleText;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
561
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.m
generated
Normal file
561
Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.m
generated
Normal file
@@ -0,0 +1,561 @@
|
|||||||
|
//
|
||||||
|
// IQUIView+IQKeyboardToolbar.m
|
||||||
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
||||||
|
// Copyright (c) 2013-24 Iftekhar Qurashi.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
#import "IQUIView+IQKeyboardToolbar.h"
|
||||||
|
#import "IQKeyboardManagerConstantsInternal.h"
|
||||||
|
#import "IQKeyboardManager.h"
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation IQBarButtonItemConfiguration
|
||||||
|
|
||||||
|
-(instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)barButtonSystemItem action:(SEL)action
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_barButtonSystemItem = barButtonSystemItem;
|
||||||
|
_action = action;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(instancetype)initWithImage:(UIImage *)image action:(SEL)action
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_image = image;
|
||||||
|
_action = action;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(instancetype)initWithTitle:(NSString *)title action:(SEL)action
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_title = title;
|
||||||
|
_action = action;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UIImage (IQKeyboardToolbarNextPreviousImage)
|
||||||
|
|
||||||
|
+(UIImage*)keyboardPreviousImage
|
||||||
|
{
|
||||||
|
static UIImage *keyboardUpImage = nil;
|
||||||
|
|
||||||
|
if (keyboardUpImage == nil)
|
||||||
|
{
|
||||||
|
NSString *base64Data = @"iVBORw0KGgoAAAANSUhEUgAAAD8AAAAkCAYAAAA+TuKHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAGmklEQVRoBd1ZWWwbRRie2bVz27s2adPGxzqxqAQCIRA3CDVJGxpKaEtRoSAVISQQggdeQIIHeIAHkOCBFyQeKlARhaYHvUJa0ksVoIgKUKFqKWqdeG2nR1Lsdeo0h73D54iku7NO6ySOk3alyPN//+zM/81/7MyEkDl66j2eJXWK8vocTT82rTgXk/t8vqBNEI9QSp9zOeVkPJnomgs7ik5eUZQ6OxGOEEq9WcKUksdlWbqU0LRfi70ARSXv8Xi8dkE8CsJ+I1FK6BNYgCgW4A8jPtvtopFHqNeWCLbDIF6fkxQjK91O1z9IgRM59bMAFoV8YEFgka1EyBJfMhkH5L9ACFstS9IpRMDJyfoVEp918sGamoVCme0QyN3GG87wAKcTOBYA4hrJKf+VSCb+nsBnqYHVnr2ntra2mpWWH0BVu52fhRH2XSZDmsA/xensokC21Pv9T3J4wcWrq17gob1er7tEhMcJuYsfGoS3hdTweuBpxaM0iCJph8fLuX7DJMPWnI2GOzi8YOKseD4gB+RSQezMRRx5vRPEn88Sz7IIx8KHgT3FCBniWJUyke6o8/uXc3jBxIKTd7vdTsFJfkSo38NbCY/vPRsOPwt81KgLqeoBXc+sBjZsxLF4ZfgM7goqSqMRL1S7oOSrq6sdLodjH0rYfbyByPEOePwZ4CO8Liv3RCL70Wctr8+mA2NkT53P91iu92aCFYx8TU1NpbOi8gfs2R7iDYLxnXqYPg3c5Fm+Xygcbs/omXXATZGBBagQqNAe9Psf4d+ZiVwQ8qjqFVVl5dmi9ShvDEL90IieXtVDevic5ruOyYiAXYiA9YSxsZow0YnSKkKFjoAn8OAENsPGjKs9qnp5iSDuBXFLXsLjR4fSIy29vb2DU7UThW4d8n0zxjXtRVAYNaJnlocikWNTHZPvP1PPl2LLujM3cfbzwJXUyukQzxrZraptRCcbEDm60Wh4S0IE7McByVJQjf3yac+EfEm9ouxAcWu2TsS6koOplr6+vstWXf5IKBrejBR4ybIAlLpE1JE6j8eyh8h/dEKmS95e7w9sy57G+MkQ6sdYMrmiv79/gNdNR0YEbGKUvIIFQMRffRBtbkG0HQj6fHdcRafWmg55Gzy+BR5vtUzF2O96kjSH4nHNopsB0B0Ob6SEvcYvAPYS1UwQDyqLFcu5IZ/pTMUkjxfEoD/wLVY9+z02PXDL8RE9s0y9qMZNigIJcU37TZblfj7aUAMqURLXuqqq9sQHBi5NZbqpkBfh8a9BPLtDMz3wyImh9GhTLBab0uSmQfIQcNQ95pJkDVG3wtgdC1KFA+HaSodjdzKZ/Neou1Y7X/JC0K98BeIvWAdjp+jwUKN6/nyfVVd4JK4lunDrkwJhc6Gl1GGjwhqnLO3UNC2Rz8z5kKfw+EYQf5EfEKF+Wh+kDd0XYxd43WzKiIBfEAEjiIAm0zyUSFiU1XJF+feJy5evW3euR57C41+A+MumSbICY2dGmd6gnlPPWXRFABABP7llCXsA2mCcDjVAJoK4qryycsfAwEDSqOPb1yQPj38O4q/yL4F4aCiTXhqNRmMWXREBFMGjslOywUbToQeyyy4IrVVO53bUgEk/uZOSr/MHPsOd0hs8F4R6mI2ONKi9vRFeNxdyIqkddknOMhA2nyuy+wAqtEol8rbEYCLnZisneXj8UxB/00KGkUiGsqU90WiPRTeHACLgoNsp4eBDHzaagRS4RbCzle6ysq3xVIq/LiMW8ti5fYRVfMs4yFibsdgI05eqqhqy6OYBEE9qnSiCLhRB7tRHFzDR1oIasBU1wHTAMpHHjcmHIP4OzwXf8XMkk24IR6NneN18klEE97mc0gJwuN9oF+SFNlF8vNJR1YYacGVcN0Eet6XvY6Pw3rhi/Bc5fiEzShp7eiOnx7H5/IsI6EAELEIE3Gu0EymwyCbQZocktWEfMHa3MEa+zqe8KwjCB8bO/7f70kxvVGPqyRy6eQshAtpdsuTDN/9us5F0MQ4zTS5BaIsPDQ3jO+5/G+fjj82dIDF2CZeKjd3R6J8W3Y0BYFca+JJQssFqLuvSUqlmESHSiZywGzsgx+OZNFnWE4scN+I3WJshAnYjAm5FBNxptp16y+y2hICLEtOVMXJcI0xvDveGi/ofU7NxBZN0XIpuIIy0mUZkZNNZVf1kDAt6lZagEhjGnxbweh8wdbw5hOwdxHbwY/j9BpTM9xi4MGzFvZhpk3Bz8J5gkb19ym7cJr5w/wEmUjzJqoNVhwAAAABJRU5ErkJggg==";
|
||||||
|
|
||||||
|
NSData *data = [[NSData alloc] initWithBase64EncodedString:base64Data options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
||||||
|
keyboardUpImage = [UIImage imageWithData:data scale:3];
|
||||||
|
|
||||||
|
//Support for RTL languages like Arabic, Persia etc... (Bug ID: #448)
|
||||||
|
keyboardUpImage = [keyboardUpImage imageFlippedForRightToLeftLayoutDirection];
|
||||||
|
}
|
||||||
|
|
||||||
|
return keyboardUpImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
+(UIImage*)keyboardNextImage
|
||||||
|
{
|
||||||
|
static UIImage *keyboardDownImage = nil;
|
||||||
|
|
||||||
|
if (keyboardDownImage == nil)
|
||||||
|
{
|
||||||
|
NSString *base64Data = @"iVBORw0KGgoAAAANSUhEUgAAAD8AAAAkCAYAAAA+TuKHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAGp0lEQVRoBd1ZCWhcRRiemff25WrydmOtuXbfZlMo4lEpKkppm6TpZUovC4UqKlQoUhURqQcUBcWDIkhVUCuI9SpJa+2h0VZjUawUEUUUirLNXqmxSnc32WaT7O4bv0nd5R1bc+2maR8s7z9m5v+/+f/5Z94sIf89jW73Yp/bfUuWvwLfDp/H8zhwObLYmCCaPJ6FjLJPCWNHNU1bkFVeQW/Zp2l7KWUvNmlaB3DJAhvz1ntvI5R1EUpnUUKdEifHGuvr519BwKUmj/cDYNtwARNd5/NoH4GWKIhzlFKXCSzn/xCut/jD4V9N8suPYYj4ewC+2e46f55Rwp/geExKSmdzJn2l1WrXmuSXF8MQ8XfyAeeEn9KTyV3MHwq9RTh50IqLEjJHUkh3Y13dPKvuMuApIr6bUHKP1VeE+Y8MIa09Z8/+JQlltD/+Q7VaFcW6X2VsjFmbRRnbUFFZeai/v/+cUTeDaYqIv4GlfL/NR879I3qmORwOnxG6UfCCiMbjJ51VagKdlgs+91BaKVO6oVJVD8bj8WhOPkMJn1t7jTL6gNU9pHpgKJ1q7u3tjWR1OfBCEOuPf+9Sq4YwAW3ZBqNvSqsYpeuc5WUHYolE3KSbQYzP430FwB+yuoSCFtKHaXP4z3DIqDOBFwpkwHfVThXLgrYaG6IGOAmT1pZVVHw8MDDQb9TNBLrJre0E8EdtvnAeSRPeHOwN9lh1NvCiASbgG5fqRLDJEmMHsSU6GFuDGrAfNWDAqLuUNE5uL6A2bbf5wPkZrmdaAuGw36aDIC940TAajx1HBijIgEWmjpRWS4ytrnKq+1EDEibdJWAa3dqzjLGnrKaxxvt4OtXS09v7u1WX5S8KXjRABnQ7VbUCEV+Y7SDeWAJX4dfuLCnZFzt//rxRN500jqo74NvTVptY42fTnLcGI5FTVp2R/1/womEsHj/mwgxg27vd2BH8bCrLq0rKyjoTicSgUTcdNIrbkwD+nM2WOJ3qmaVI9d9sOotgTPCiPTLgi+oqdTbOAbea+lM6xyHLK8pnVXSiCCZNuiIyjZr2GArSS1YTOKie45n0UqT6L1ZdPn5c4EVHHIS6sA3WYLZvNg6E9L9GZmwZzgEdqAFDRl0xaET8EQB/2To21ngsQ0kbIv6zVXcxftzgxQDIgM+qVbUeGbDAPCCtxbfxUhdjHdGhoWGzrnAcIr4NwHflGbGf6PqyQCj0Yx7dRUUTAi9GwQQccapOL7bBm4yjIiPqSElpC5VYRzKZLPgE4M5hK0rt67CDZDM9A+k0XxmIhE6apONgJgxejBmLxw65VHUu/LjRaANeNZQpyhJZUToGBwdHjLqp0Ij4FgB/0wocaxw7DV8F4CcmM/6kwMMQRwYcrFad87DvXW8yTKlbkZVFSmlJB3bBlEk3CQYRvxfA3wbw0Vun7BAAPqjrmfaecPjbrGyib2sKTbS/LG5F4NhGe0d+fDiTuSMSiUx6F8Bn6V343N6TB3gSyb/aHwx22+2OX2KazfF3y7VMnw4FcUvCP8lJcgRtVph0yEu8pTnRBAiv270JwN+1AscQw5zr66YKXLgyVfBijBQc2YQ0PCIY4wPH2yQPERNTYpSPRSPid0qUvY/+1mU5QjJ8PVL96FhjjEdfCPDCzggyAKnPP7cZpWQFlsZ+yPGdMPaDiK/F6fEjbKeypXVK5/pGfyTYZZFPmi0UeOHAcCZI1+Oa6JjVG0SwHbcrnZDn7sytbQSPiLdLTBJXy+Z2nKcR8U09odDhfP0mKyskeBIggaERPb0WGfC1zSFK1gDcXsitER1t6m3wrkTEbRmC5ZTRCd+MiB+wjTlFwVSrfV7zdXV15aWy0oWKvNjWgJMOfyiAIklwYXLhwfd4G/47OAxnTMVRAKec3u0PB8SkFfyxFpSCGMBHTkpWHPsU2bEEKe8xDUrJdfhKnItzgiiEXKvXWhijR9CuzNgOwHWc1+87HQ5+aJQXki4KeOGgOOFJDkdnqeJowSGlweg00vsGHJAa1UpnTJKIAF5u1AM4R8S3APgeo7zQdFHS3uikz+VSSWXVlwBo+hoUbUR0ITfVHQEcEd+K4rbbOE4xaJPhYhg4HY3GcYG4HFB/so5vBT6q53TbdAAXtooe+SzghoaGakWSu2FwflZmfWMffxjAX7XKi8VPG3gBoKam5uoKpeQEDjBz7YD4dpwUd9rlxZMUPe2Nrvf19f2dTKdasap7jHIsiR3TDdxsfxq5xtpazad5g02al+Na6plpND0zTHk8Hp+4iLyU3vwLp0orLWXqrZQAAAAASUVORK5CYII=";
|
||||||
|
|
||||||
|
NSData *data = [[NSData alloc] initWithBase64EncodedString:base64Data options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
||||||
|
keyboardDownImage = [UIImage imageWithData:data scale:3];
|
||||||
|
|
||||||
|
//Support for RTL languages like Arabic, Persia etc... (Bug ID: #448)
|
||||||
|
keyboardDownImage = [keyboardDownImage imageFlippedForRightToLeftLayoutDirection];
|
||||||
|
}
|
||||||
|
|
||||||
|
return keyboardDownImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
/*UIKeyboardToolbar Category implementation*/
|
||||||
|
NS_EXTENSION_UNAVAILABLE_IOS("Unavailable in extension")
|
||||||
|
@implementation UIView (IQToolbarAddition)
|
||||||
|
|
||||||
|
-(IQToolbar *)keyboardToolbar
|
||||||
|
{
|
||||||
|
IQToolbar *keyboardToolbar = nil;
|
||||||
|
if ([[self inputAccessoryView] isKindOfClass:[IQToolbar class]])
|
||||||
|
{
|
||||||
|
keyboardToolbar = [self inputAccessoryView];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
keyboardToolbar = objc_getAssociatedObject(self, @selector(keyboardToolbar));
|
||||||
|
|
||||||
|
if (keyboardToolbar == nil)
|
||||||
|
{
|
||||||
|
CGFloat width = 0;
|
||||||
|
|
||||||
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
|
||||||
|
if (@available(iOS 13.0, *))
|
||||||
|
{
|
||||||
|
width = self.window.windowScene.screen.bounds.size.width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
width = UIScreen.mainScreen.bounds.size.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
CGRect frame = CGRectMake(0, 0, width, 44);
|
||||||
|
|
||||||
|
keyboardToolbar = [[IQToolbar alloc] initWithFrame:frame];
|
||||||
|
|
||||||
|
objc_setAssociatedObject(self, @selector(keyboardToolbar), keyboardToolbar, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return keyboardToolbar;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setShouldHideToolbarPlaceholder:(BOOL)shouldHideToolbarPlaceholder
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(shouldHideToolbarPlaceholder), @(shouldHideToolbarPlaceholder), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
|
||||||
|
self.keyboardToolbar.titleBarButton.title = self.drawingToolbarPlaceholder;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)shouldHideToolbarPlaceholder
|
||||||
|
{
|
||||||
|
NSNumber *shouldHideToolbarPlaceholder = objc_getAssociatedObject(self, @selector(shouldHideToolbarPlaceholder));
|
||||||
|
return [shouldHideToolbarPlaceholder boolValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setToolbarPlaceholder:(NSString *)toolbarPlaceholder
|
||||||
|
{
|
||||||
|
objc_setAssociatedObject(self, @selector(toolbarPlaceholder), toolbarPlaceholder, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
|
||||||
|
self.keyboardToolbar.titleBarButton.title = self.drawingToolbarPlaceholder;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(NSString *)toolbarPlaceholder
|
||||||
|
{
|
||||||
|
NSString *toolbarPlaceholder = objc_getAssociatedObject(self, @selector(toolbarPlaceholder));
|
||||||
|
return toolbarPlaceholder;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(NSString *)drawingToolbarPlaceholder
|
||||||
|
{
|
||||||
|
if (self.shouldHideToolbarPlaceholder)
|
||||||
|
{
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
else if (self.toolbarPlaceholder.length != 0)
|
||||||
|
{
|
||||||
|
return self.toolbarPlaceholder;
|
||||||
|
}
|
||||||
|
else if ([self respondsToSelector:@selector(placeholder)])
|
||||||
|
{
|
||||||
|
return [(UITextField*)self placeholder];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Private helper
|
||||||
|
|
||||||
|
+(IQBarButtonItem*)flexibleBarButtonItem
|
||||||
|
{
|
||||||
|
static IQBarButtonItem *nilButton = nil;
|
||||||
|
|
||||||
|
if (nilButton == nil)
|
||||||
|
{
|
||||||
|
nilButton = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
return nilButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Common
|
||||||
|
|
||||||
|
- (void)addKeyboardToolbarWithTarget:(id)target titleText:(NSString*)titleText rightBarButtonConfiguration:(IQBarButtonItemConfiguration*)rightBarButtonConfiguration previousBarButtonConfiguration:(IQBarButtonItemConfiguration*)previousBarButtonConfiguration nextBarButtonConfiguration:(IQBarButtonItemConfiguration*)nextBarButtonConfiguration
|
||||||
|
{
|
||||||
|
//If can't set InputAccessoryView. Then return
|
||||||
|
if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
|
||||||
|
|
||||||
|
// Creating a toolBar for phoneNumber keyboard
|
||||||
|
IQToolbar *toolbar = self.keyboardToolbar;
|
||||||
|
|
||||||
|
NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
if(previousBarButtonConfiguration)
|
||||||
|
{
|
||||||
|
IQBarButtonItem *prev = toolbar.previousBarButton;
|
||||||
|
|
||||||
|
if (prev.isSystemItem == NO && (previousBarButtonConfiguration.image || previousBarButtonConfiguration.title))
|
||||||
|
{
|
||||||
|
prev.title = previousBarButtonConfiguration.title;
|
||||||
|
prev.accessibilityLabel = previousBarButtonConfiguration.accessibilityLabel;
|
||||||
|
prev.accessibilityIdentifier = prev.accessibilityLabel;
|
||||||
|
prev.image = previousBarButtonConfiguration.image;
|
||||||
|
prev.target = target;
|
||||||
|
prev.action = previousBarButtonConfiguration.action;
|
||||||
|
}
|
||||||
|
else if (previousBarButtonConfiguration.image)
|
||||||
|
{
|
||||||
|
prev = [[IQBarButtonItem alloc] initWithImage:previousBarButtonConfiguration.image style:UIBarButtonItemStylePlain target:target action:previousBarButtonConfiguration.action];
|
||||||
|
prev.invocation = toolbar.previousBarButton.invocation;
|
||||||
|
prev.accessibilityLabel = previousBarButtonConfiguration.accessibilityLabel;
|
||||||
|
prev.accessibilityIdentifier = prev.accessibilityLabel;
|
||||||
|
prev.enabled = toolbar.previousBarButton.enabled;
|
||||||
|
prev.tag = toolbar.previousBarButton.tag;
|
||||||
|
toolbar.previousBarButton = prev;
|
||||||
|
}
|
||||||
|
else if (previousBarButtonConfiguration.title)
|
||||||
|
{
|
||||||
|
prev = [[IQBarButtonItem alloc] initWithTitle:previousBarButtonConfiguration.title style:UIBarButtonItemStylePlain target:target action:previousBarButtonConfiguration.action];
|
||||||
|
prev.invocation = toolbar.previousBarButton.invocation;
|
||||||
|
prev.accessibilityLabel = previousBarButtonConfiguration.accessibilityLabel;
|
||||||
|
prev.accessibilityIdentifier = prev.accessibilityLabel;
|
||||||
|
prev.enabled = toolbar.previousBarButton.enabled;
|
||||||
|
prev.tag = toolbar.previousBarButton.tag;
|
||||||
|
toolbar.previousBarButton = prev;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prev = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:previousBarButtonConfiguration.barButtonSystemItem target:target action:previousBarButtonConfiguration.action];
|
||||||
|
prev.invocation = toolbar.previousBarButton.invocation;
|
||||||
|
prev.accessibilityLabel = previousBarButtonConfiguration.accessibilityLabel;
|
||||||
|
prev.accessibilityIdentifier = prev.accessibilityLabel;
|
||||||
|
prev.enabled = toolbar.previousBarButton.enabled;
|
||||||
|
prev.tag = toolbar.previousBarButton.tag;
|
||||||
|
toolbar.previousBarButton = prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
[items addObject:prev];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previousBarButtonConfiguration != nil && nextBarButtonConfiguration != nil)
|
||||||
|
{
|
||||||
|
[items addObject:toolbar.fixedSpaceBarButton];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(nextBarButtonConfiguration)
|
||||||
|
{
|
||||||
|
IQBarButtonItem *next = toolbar.nextBarButton;
|
||||||
|
|
||||||
|
if (next.isSystemItem == NO && (nextBarButtonConfiguration.image || nextBarButtonConfiguration.title))
|
||||||
|
{
|
||||||
|
next.title = nextBarButtonConfiguration.title;
|
||||||
|
next.accessibilityLabel = nextBarButtonConfiguration.accessibilityLabel;
|
||||||
|
next.accessibilityIdentifier = next.accessibilityLabel;
|
||||||
|
next.image = nextBarButtonConfiguration.image;
|
||||||
|
next.target = target;
|
||||||
|
next.action = nextBarButtonConfiguration.action;
|
||||||
|
}
|
||||||
|
else if (nextBarButtonConfiguration.image)
|
||||||
|
{
|
||||||
|
next = [[IQBarButtonItem alloc] initWithImage:nextBarButtonConfiguration.image style:UIBarButtonItemStylePlain target:target action:nextBarButtonConfiguration.action];
|
||||||
|
next.invocation = toolbar.nextBarButton.invocation;
|
||||||
|
next.accessibilityLabel = nextBarButtonConfiguration.accessibilityLabel;
|
||||||
|
next.accessibilityIdentifier = next.accessibilityLabel;
|
||||||
|
next.enabled = toolbar.nextBarButton.enabled;
|
||||||
|
next.tag = toolbar.nextBarButton.tag;
|
||||||
|
toolbar.nextBarButton = next;
|
||||||
|
}
|
||||||
|
else if (nextBarButtonConfiguration.title)
|
||||||
|
{
|
||||||
|
next = [[IQBarButtonItem alloc] initWithTitle:nextBarButtonConfiguration.title style:UIBarButtonItemStylePlain target:target action:nextBarButtonConfiguration.action];
|
||||||
|
next.invocation = toolbar.nextBarButton.invocation;
|
||||||
|
next.accessibilityLabel = nextBarButtonConfiguration.accessibilityLabel;
|
||||||
|
next.accessibilityIdentifier = next.accessibilityLabel;
|
||||||
|
next.enabled = toolbar.nextBarButton.enabled;
|
||||||
|
next.tag = toolbar.nextBarButton.tag;
|
||||||
|
toolbar.nextBarButton = next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
next = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:nextBarButtonConfiguration.barButtonSystemItem target:target action:nextBarButtonConfiguration.action];
|
||||||
|
next.invocation = toolbar.nextBarButton.invocation;
|
||||||
|
next.accessibilityLabel = nextBarButtonConfiguration.accessibilityLabel;
|
||||||
|
next.accessibilityIdentifier = next.accessibilityLabel;
|
||||||
|
next.enabled = toolbar.nextBarButton.enabled;
|
||||||
|
next.tag = toolbar.nextBarButton.tag;
|
||||||
|
toolbar.nextBarButton = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
[items addObject:next];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Title
|
||||||
|
{
|
||||||
|
//Flexible space
|
||||||
|
[items addObject:[[self class] flexibleBarButtonItem]];
|
||||||
|
|
||||||
|
//Title button
|
||||||
|
toolbar.titleBarButton.title = titleText;
|
||||||
|
[items addObject:toolbar.titleBarButton];
|
||||||
|
|
||||||
|
//Flexible space
|
||||||
|
[items addObject:[[self class] flexibleBarButtonItem]];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rightBarButtonConfiguration)
|
||||||
|
{
|
||||||
|
IQBarButtonItem *done = toolbar.doneBarButton;
|
||||||
|
|
||||||
|
if (done.isSystemItem == NO && (rightBarButtonConfiguration.image || rightBarButtonConfiguration.title))
|
||||||
|
{
|
||||||
|
done.title = rightBarButtonConfiguration.title;
|
||||||
|
done.accessibilityLabel = rightBarButtonConfiguration.accessibilityLabel;
|
||||||
|
done.accessibilityIdentifier = done.accessibilityLabel;
|
||||||
|
done.image = rightBarButtonConfiguration.image;
|
||||||
|
done.target = target;
|
||||||
|
done.action = rightBarButtonConfiguration.action;
|
||||||
|
}
|
||||||
|
else if (rightBarButtonConfiguration.image)
|
||||||
|
{
|
||||||
|
done = [[IQBarButtonItem alloc] initWithImage:rightBarButtonConfiguration.image style:UIBarButtonItemStylePlain target:target action:rightBarButtonConfiguration.action];
|
||||||
|
done.invocation = toolbar.doneBarButton.invocation;
|
||||||
|
done.accessibilityLabel = rightBarButtonConfiguration.accessibilityLabel;
|
||||||
|
done.accessibilityIdentifier = done.accessibilityLabel;
|
||||||
|
done.enabled = toolbar.doneBarButton.enabled;
|
||||||
|
done.tag = toolbar.doneBarButton.tag;
|
||||||
|
toolbar.doneBarButton = done;
|
||||||
|
}
|
||||||
|
else if (rightBarButtonConfiguration.title)
|
||||||
|
{
|
||||||
|
done = [[IQBarButtonItem alloc] initWithTitle:rightBarButtonConfiguration.title style:UIBarButtonItemStylePlain target:target action:rightBarButtonConfiguration.action];
|
||||||
|
done.invocation = toolbar.doneBarButton.invocation;
|
||||||
|
done.accessibilityLabel = rightBarButtonConfiguration.accessibilityLabel;
|
||||||
|
done.accessibilityIdentifier = done.accessibilityLabel;
|
||||||
|
done.enabled = toolbar.doneBarButton.enabled;
|
||||||
|
done.tag = toolbar.doneBarButton.tag;
|
||||||
|
toolbar.doneBarButton = done;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
done = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:rightBarButtonConfiguration.barButtonSystemItem target:target action:rightBarButtonConfiguration.action];
|
||||||
|
done.invocation = toolbar.doneBarButton.invocation;
|
||||||
|
done.accessibilityLabel = rightBarButtonConfiguration.accessibilityLabel;
|
||||||
|
done.accessibilityIdentifier = done.accessibilityLabel;
|
||||||
|
done.enabled = toolbar.doneBarButton.enabled;
|
||||||
|
done.tag = toolbar.doneBarButton.tag;
|
||||||
|
toolbar.doneBarButton = done;
|
||||||
|
}
|
||||||
|
|
||||||
|
[items addObject:done];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adding button to toolBar.
|
||||||
|
[toolbar setItems:items];
|
||||||
|
|
||||||
|
// Setting toolbar to keyboard.
|
||||||
|
[(UITextField*)self setInputAccessoryView:toolbar];
|
||||||
|
|
||||||
|
if ([self respondsToSelector:@selector(keyboardAppearance)])
|
||||||
|
{
|
||||||
|
switch ([(UITextField*)self keyboardAppearance])
|
||||||
|
{
|
||||||
|
case UIKeyboardAppearanceDark: toolbar.barStyle = UIBarStyleBlack; break;
|
||||||
|
default: toolbar.barStyle = UIBarStyleDefault; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[self reloadInputViews];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Right
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithText:(NSString*)text target:(id)target action:(SEL)action
|
||||||
|
{
|
||||||
|
[self addRightButtonOnKeyboardWithText:text target:target action:action titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithText:(NSString*)text target:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addRightButtonOnKeyboardWithText:text target:target action:action titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithText:(NSString*)text target:(id)target action:(SEL)action titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithTitle:text action:action];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:nil nextBarButtonConfiguration:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithImage:(UIImage*)image target:(id)target action:(SEL)action
|
||||||
|
{
|
||||||
|
[self addRightButtonOnKeyboardWithImage:image target:target action:action titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithImage:(UIImage*)image target:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addRightButtonOnKeyboardWithImage:image target:target action:action titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addRightButtonOnKeyboardWithImage:(UIImage*)image target:(id)target action:(SEL)action titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:image action:action];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:nil nextBarButtonConfiguration:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action
|
||||||
|
{
|
||||||
|
[self addDoneOnKeyboardWithTarget:target action:action titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addDoneOnKeyboardWithTarget:target action:action titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone action:action];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:nil nextBarButtonConfiguration:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void)addLeftRightOnKeyboardWithTarget:(id)target leftButtonTitle:(NSString*)leftTitle rightButtonTitle:(NSString*)rightTitle leftButtonAction:(SEL)leftAction rightButtonAction:(SEL)rightAction
|
||||||
|
{
|
||||||
|
[self addLeftRightOnKeyboardWithTarget:target leftButtonTitle:leftTitle rightButtonTitle:rightTitle leftButtonAction:leftAction rightButtonAction:rightAction titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addLeftRightOnKeyboardWithTarget:(id)target leftButtonTitle:(NSString*)leftTitle rightButtonTitle:(NSString*)rightTitle leftButtonAction:(SEL)leftAction rightButtonAction:(SEL)rightAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addLeftRightOnKeyboardWithTarget:target leftButtonTitle:leftTitle rightButtonTitle:rightTitle leftButtonAction:leftAction rightButtonAction:rightAction titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addLeftRightOnKeyboardWithTarget:(id)target leftButtonTitle:(NSString*)leftTitle rightButtonTitle:(NSString*)rightTitle leftButtonAction:(SEL)leftAction rightButtonAction:(SEL)rightAction titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *leftConfiguration = [[IQBarButtonItemConfiguration alloc] initWithTitle:leftTitle action:leftAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithTitle:rightTitle action:rightAction];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:leftConfiguration nextBarButtonConfiguration:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction
|
||||||
|
{
|
||||||
|
[self addCancelDoneOnKeyboardWithTarget:target cancelAction:cancelAction doneAction:doneAction titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addCancelDoneOnKeyboardWithTarget:target cancelAction:cancelAction doneAction:doneAction titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *leftConfiguration = [[IQBarButtonItemConfiguration alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel action:cancelAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone action:doneAction];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:leftConfiguration nextBarButtonConfiguration:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction
|
||||||
|
{
|
||||||
|
[self addPreviousNextDoneOnKeyboardWithTarget:target previousAction:previousAction nextAction:nextAction doneAction:doneAction titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addPreviousNextDoneOnKeyboardWithTarget:target previousAction:previousAction nextAction:nextAction doneAction:doneAction titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *previousConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:[UIImage keyboardPreviousImage] action:previousAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *nextConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:[UIImage keyboardNextImage] action:nextAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone action:doneAction];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:previousConfiguration nextBarButtonConfiguration:nextConfiguration];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonImage:(nullable UIImage*)rightButtonImage previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction
|
||||||
|
{
|
||||||
|
[self addPreviousNextRightOnKeyboardWithTarget:target rightButtonImage:rightButtonImage previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonImage:(nullable UIImage*)rightButtonImage previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addPreviousNextRightOnKeyboardWithTarget:target rightButtonImage:rightButtonImage previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonImage:(UIImage*)rightButtonImage previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *previousConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:[UIImage keyboardPreviousImage] action:previousAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *nextConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:[UIImage keyboardNextImage] action:nextAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:rightButtonImage action:rightButtonAction];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:previousConfiguration nextBarButtonConfiguration:nextConfiguration];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction
|
||||||
|
{
|
||||||
|
[self addPreviousNextRightOnKeyboardWithTarget:target rightButtonTitle:rightButtonTitle previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
|
||||||
|
{
|
||||||
|
[self addPreviousNextRightOnKeyboardWithTarget:target rightButtonTitle:rightButtonTitle previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:(shouldShowPlaceholder?[self drawingToolbarPlaceholder]:nil)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction titleText:(NSString*)titleText
|
||||||
|
{
|
||||||
|
IQBarButtonItemConfiguration *previousConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:[UIImage keyboardPreviousImage] action:previousAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *nextConfiguration = [[IQBarButtonItemConfiguration alloc] initWithImage:[UIImage keyboardNextImage] action:nextAction];
|
||||||
|
|
||||||
|
IQBarButtonItemConfiguration *rightConfiguration = [[IQBarButtonItemConfiguration alloc] initWithTitle:rightButtonTitle action:rightButtonAction];
|
||||||
|
|
||||||
|
[self addKeyboardToolbarWithTarget:target titleText:titleText rightBarButtonConfiguration:rightConfiguration previousBarButtonConfiguration:previousConfiguration nextBarButtonConfiguration:nextConfiguration];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
14
Pods/IQKeyboardManager/IQKeyboardManager/PrivacyInfo.xcprivacy
generated
Normal file
14
Pods/IQKeyboardManager/IQKeyboardManager/PrivacyInfo.xcprivacy
generated
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?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/>
|
||||||
|
<key>NSPrivacyTrackingDomains</key>
|
||||||
|
<array/>
|
||||||
|
<key>NSPrivacyCollectedDataTypes</key>
|
||||||
|
<array/>
|
||||||
|
<key>NSPrivacyTracking</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
21
Pods/IQKeyboardManager/LICENSE.md
generated
Normal file
21
Pods/IQKeyboardManager/LICENSE.md
generated
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2013-2023 Iftekhar Qurashi
|
||||||
|
|
||||||
|
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.
|
||||||
220
Pods/IQKeyboardManager/README.md
generated
Normal file
220
Pods/IQKeyboardManager/README.md
generated
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
<p align="center">
|
||||||
|
<img src="https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Demo/Resources/icon.png" alt="Icon"/>
|
||||||
|
</p>
|
||||||
|
<H1 align="center">IQKeyboardManager</H1>
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://img.shields.io/github/license/hackiftekhar/IQKeyboardManager.svg"
|
||||||
|
alt="GitHub license"/>
|
||||||
|
|
||||||
|
|
||||||
|
[](https://travis-ci.org/hackiftekhar/IQKeyboardManager)
|
||||||
|
|
||||||
|
|
||||||
|
While developing iOS apps, we often run into issues where the iPhone keyboard slides up and covers the `UITextField/UITextView`. `IQKeyboardManager` allows you to prevent this issue of keyboard sliding up and covering `UITextField/UITextView` without needing you to write any code or make any additional setup. To use `IQKeyboardManager` you simply need to add source files to your project.
|
||||||
|
|
||||||
|
|
||||||
|
#### Key Features
|
||||||
|
|
||||||
|
1) `**CODELESS**, Zero Lines of Code`
|
||||||
|
|
||||||
|
2) `Works Automatically`
|
||||||
|
|
||||||
|
3) `No More UIScrollView`
|
||||||
|
|
||||||
|
4) `No More Subclasses`
|
||||||
|
|
||||||
|
5) `No More Manual Work`
|
||||||
|
|
||||||
|
6) `No More #imports`
|
||||||
|
|
||||||
|
`IQKeyboardManager` works on all orientations, and with the toolbar. It also has nice optional features allowing you to customize the distance from the text field, behaviour of previous, next and done buttons in the keyboard toolbar, play sound when the user navigates through the form and more.
|
||||||
|
|
||||||
|
|
||||||
|
## Screenshot
|
||||||
|
[](http://youtu.be/6nhLw6hju2A)
|
||||||
|
[](http://youtu.be/6nhLw6hju2A)
|
||||||
|
[](http://youtu.be/6nhLw6hju2A)
|
||||||
|
[](http://youtu.be/6nhLw6hju2A)
|
||||||
|
[](http://youtu.be/6nhLw6hju2A)
|
||||||
|
|
||||||
|
## GIF animation
|
||||||
|
[](http://youtu.be/6nhLw6hju2A)
|
||||||
|
|
||||||
|
## Video
|
||||||
|
|
||||||
|
<a href="http://youtu.be/WAYc2Qj-OQg" target="_blank"><img src="http://img.youtube.com/vi/WAYc2Qj-OQg/0.jpg"
|
||||||
|
alt="IQKeyboardManager Demo Video" width="480" height="360" border="10" /></a>
|
||||||
|
|
||||||
|
## Tutorial video by @rebeloper ([#1135](https://github.com/hackiftekhar/IQKeyboardManager/issues/1135))
|
||||||
|
|
||||||
|
@rebeloper demonstrated two videos on how to implement **IQKeyboardManager** at it's core:
|
||||||
|
|
||||||
|
<a href="https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v" target="_blank"><img src="https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/ThirdPartyYoutubeTutorial.jpg"
|
||||||
|
alt="Youtube Tutorial Playlist"/></a>
|
||||||
|
|
||||||
|
https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v
|
||||||
|
|
||||||
|
## Warning
|
||||||
|
|
||||||
|
- **If you're planning to build SDK/library/framework and want to handle UITextField/UITextView with IQKeyboardManager then you're totally going the wrong way.** I would never suggest to add **IQKeyboardManager** as **dependency/adding/shipping** with any third-party library. Instead of adding **IQKeyboardManager** you should implement your own solution to achieve same kind of results. **IQKeyboardManager** is totally designed for projects to help developers for their convenience, it's not designed for **adding/dependency/shipping** with any **third-party library**, because **doing this could block adoption by other developers for their projects as well (who are not using IQKeyboardManager and have implemented their custom solution to handle UITextField/UITextView in the project).**
|
||||||
|
- If **IQKeyboardManager** conflicts with other **third-party library**, then it's **developer responsibility** to **enable/disable IQKeyboardManager** when **presenting/dismissing** third-party library UI. Third-party libraries are not responsible to handle IQKeyboardManager.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
[]()
|
||||||
|
|
||||||
|
| | Language | Minimum iOS Target | Minimum Xcode Version |
|
||||||
|
|------------------------|----------|--------------------|-----------------------|
|
||||||
|
| IQKeyboardManager | Obj-C | iOS 11.0 | Xcode 13 |
|
||||||
|
| IQKeyboardManagerSwift | Swift | iOS 13.0 | Xcode 13 |
|
||||||
|
| Demo Project | | | Xcode 15 |
|
||||||
|
|
||||||
|
#### Swift versions support
|
||||||
|
|
||||||
|
| Swift | Xcode | IQKeyboardManagerSwift |
|
||||||
|
|-------------------|-------|------------------------|
|
||||||
|
| 5.9, 5.8, 5.7, 5.6| 15 | >= 7.0.0 |
|
||||||
|
| 5.5, 5.4, 5.3, 5.2, 5.1, 5.0, 4.2| 11 | >= 6.5.7 |
|
||||||
|
| 5.1, 5.0, 4.2, 4.0, 3.2, 3.0| 11 | >= 6.5.0 |
|
||||||
|
| 5.0,4.2, 4.0, 3.2, 3.0| 10.2 | >= 6.2.1 |
|
||||||
|
| 4.2, 4.0, 3.2, 3.0| 10.0 | >= 6.0.4 |
|
||||||
|
| 4.0, 3.2, 3.0 | 9.0 | 5.0.0 |
|
||||||
|
|
||||||
|
## 7.0.0 version notes
|
||||||
|
- In this major release, a lot of variables and functions have been moved here and there. We have mentioned most of the major things in the MIGRATION GUIDE. So please take a look to make changes in your project when upgrading to this version.
|
||||||
|
- The 7.0.0 version adopted the latest Swift Concurrency/Actor feature and only available iOS 13.0 and above.
|
||||||
|
- Internal keyboard management handling have been updated with a different and better approach than legacy versions. However when adopting 7.0.0, please verify if it is working as expected in your apps, if there are any serious problems with 7.0.0 please open an issue with all the details and switch back to legacy version temporarily.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
==========================
|
||||||
|
|
||||||
|
#### Installation with CocoaPods
|
||||||
|
|
||||||
|
[](http://cocoadocs.org/docsets/IQKeyboardManager)
|
||||||
|
|
||||||
|
***IQKeyboardManager (Objective-C):*** IQKeyboardManager is available through [CocoaPods](http://cocoapods.org). To install
|
||||||
|
it, simply add the following line to your Podfile: ([#9](https://github.com/hackiftekhar/IQKeyboardManager/issues/9))
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
pod 'IQKeyboardManager' #iOS13 and later
|
||||||
|
```
|
||||||
|
|
||||||
|
***IQKeyboardManager (Swift):*** IQKeyboardManagerSwift is available through [CocoaPods](http://cocoapods.org). To install
|
||||||
|
it, simply add the following line to your Podfile: ([#236](https://github.com/hackiftekhar/IQKeyboardManager/issues/236))
|
||||||
|
|
||||||
|
*Swift 5.9, 5.8, 5.7, 5.6, 5.5 (Xcode 15)*
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
pod 'IQKeyboardManagerSwift'
|
||||||
|
```
|
||||||
|
|
||||||
|
*Or you can choose the version you need based on Swift support table from [Requirements](README.md#requirements)*
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
pod 'IQKeyboardManagerSwift', '6.3.0'
|
||||||
|
```
|
||||||
|
|
||||||
|
In AppDelegate.swift, just import IQKeyboardManagerSwift framework and enable IQKeyboardManager.
|
||||||
|
|
||||||
|
```swift
|
||||||
|
import IQKeyboardManagerSwift
|
||||||
|
|
||||||
|
@UIApplicationMain
|
||||||
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
|
|
||||||
|
var window: UIWindow?
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||||
|
|
||||||
|
IQKeyboardManager.shared.enable = true
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Installation with Carthage
|
||||||
|
|
||||||
|
[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
|
||||||
|
|
||||||
|
You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ brew update
|
||||||
|
$ brew install carthage
|
||||||
|
```
|
||||||
|
|
||||||
|
To integrate `IQKeyboardManger` or `IQKeyboardManagerSwift` into your Xcode project using Carthage, add the following line to your `Cartfile`:
|
||||||
|
|
||||||
|
```ogdl
|
||||||
|
github "hackiftekhar/IQKeyboardManager"
|
||||||
|
```
|
||||||
|
|
||||||
|
Run `carthage` to build the frameworks and drag the appropriate framework (`IQKeyboardManager.framework` or `IQKeyboardManagerSwift.framework`) into your Xcode project based on your need. Make sure to add only one framework and not both.
|
||||||
|
|
||||||
|
|
||||||
|
#### Installation with Source Code
|
||||||
|
|
||||||
|
[]()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***IQKeyboardManager (Objective-C):*** Just ***drag and drop*** `IQKeyboardManager` directory from demo project to your project. That's it.
|
||||||
|
|
||||||
|
***IQKeyboardManager (Swift):*** ***Drag and drop*** `IQKeyboardManagerSwift` directory from demo project to your project
|
||||||
|
|
||||||
|
In AppDelegate.swift, just enable IQKeyboardManager.
|
||||||
|
|
||||||
|
```swift
|
||||||
|
@UIApplicationMain
|
||||||
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
|
|
||||||
|
var window: UIWindow?
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||||
|
|
||||||
|
IQKeyboardManager.shared.enable = true
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Installation with Swift Package Manager
|
||||||
|
|
||||||
|
[Swift Package Manager(SPM)](https://swift.org/package-manager/) is Apple's dependency manager tool. It is now supported in Xcode 11. So it can be used in all appleOS types of projects. It can be used alongside other tools like CocoaPods and Carthage as well.
|
||||||
|
|
||||||
|
To install IQKeyboardManagerSwift package via Xcode
|
||||||
|
|
||||||
|
* Go to File -> Swift Packages -> Add Package Dependency...
|
||||||
|
* Then search for https://github.com/hackiftekhar/IQKeyboardManager.git
|
||||||
|
* And choose the version you want
|
||||||
|
|
||||||
|
Migration Guide
|
||||||
|
==========================
|
||||||
|
- [IQKeyboardManager 6.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-6.0.0-Migration-Guide)
|
||||||
|
- [IQKeyboardManager 7.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-7.0.0-Migration-Guide)
|
||||||
|
|
||||||
|
Other Links
|
||||||
|
==========================
|
||||||
|
|
||||||
|
- [Known Issues](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Known-Issues)
|
||||||
|
- [Manual Management Tweaks](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Manual-Management)
|
||||||
|
- [Properties and functions usage](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Properties-&-Functions)
|
||||||
|
|
||||||
|
## Flow Diagram
|
||||||
|
[](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/IQKeyboardManagerFlowDiagram.jpg)
|
||||||
|
|
||||||
|
If you would like to see detailed Flow diagram then check [Detailed Flow Diagram](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManagerCFD.jpg).
|
||||||
|
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
---
|
||||||
|
Distributed under the MIT License.
|
||||||
|
|
||||||
|
Contributions
|
||||||
|
---
|
||||||
|
Any contribution is more than welcome! You can contribute through pull requests and issues on GitHub.
|
||||||
|
|
||||||
|
Author
|
||||||
|
---
|
||||||
|
If you wish to contact me, email at: hack.iftekhar@gmail.com
|
||||||
7
Pods/Manifest.lock
generated
7
Pods/Manifest.lock
generated
@@ -94,6 +94,7 @@ PODS:
|
|||||||
- FMDB/Core (2.7.12)
|
- FMDB/Core (2.7.12)
|
||||||
- FMDB/standard (2.7.12):
|
- FMDB/standard (2.7.12):
|
||||||
- FMDB/Core
|
- FMDB/Core
|
||||||
|
- IQKeyboardManager (6.5.19)
|
||||||
- JXCategoryView (1.6.8)
|
- JXCategoryView (1.6.8)
|
||||||
- JXPagingView/Pager (2.1.3)
|
- JXPagingView/Pager (2.1.3)
|
||||||
- libwebp (1.5.0):
|
- libwebp (1.5.0):
|
||||||
@@ -250,6 +251,8 @@ DEPENDENCIES:
|
|||||||
- AvoidCrash
|
- AvoidCrash
|
||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView/Pager
|
- JXPagingView/Pager
|
||||||
- LLDebugTool
|
- LLDebugTool
|
||||||
@@ -292,6 +295,7 @@ SPEC REPOS:
|
|||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
- FMDB
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView
|
- JXPagingView
|
||||||
- libwebp
|
- libwebp
|
||||||
@@ -345,6 +349,7 @@ SPEC CHECKSUMS:
|
|||||||
BRPickerView: 6dd69ea2c48e0a0abf1d197a705050e13143ee63
|
BRPickerView: 6dd69ea2c48e0a0abf1d197a705050e13143ee63
|
||||||
Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
|
Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
|
||||||
FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
|
FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
|
||||||
|
IQKeyboardManager: c8665b3396bd0b79402b4c573eac345a31c7d485
|
||||||
JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518
|
JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518
|
||||||
JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
|
JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
|
||||||
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
||||||
@@ -379,6 +384,6 @@ SPEC CHECKSUMS:
|
|||||||
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
||||||
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
||||||
|
|
||||||
PODFILE CHECKSUM: 9f0c224f530b4e6d6636265a8440d96ff79f0a83
|
PODFILE CHECKSUM: 0d9fb42b40922f1e7b70bca0655faf5be6d1d454
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
23341
Pods/Pods.xcodeproj/project.pbxproj
generated
23341
Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1600"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "05B2A835D60F78761395189914B88047"
|
||||||
|
BuildableName = "IQKeyboardManager.bundle"
|
||||||
|
BlueprintName = "IQKeyboardManager-IQKeyboardManager"
|
||||||
|
ReferencedContainer = "container:Pods.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
58
Pods/Pods.xcodeproj/xcuserdata/qixing.xcuserdatad/xcschemes/IQKeyboardManager.xcscheme
generated
Normal file
58
Pods/Pods.xcodeproj/xcuserdata/qixing.xcuserdatad/xcschemes/IQKeyboardManager.xcscheme
generated
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1600"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "FBA456CB50E371584C11231929A0971E"
|
||||||
|
BuildableName = "IQKeyboardManager.framework"
|
||||||
|
BlueprintName = "IQKeyboardManager"
|
||||||
|
ReferencedContainer = "container:Pods.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
@@ -8,428 +8,316 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>2</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AgoraComponetLog.xcscheme</key>
|
<key>AgoraComponetLog.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>3</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AgoraInfra_iOS.xcscheme</key>
|
<key>AgoraInfra_iOS.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>4</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AgoraLyricsScore-AgoraLyricsScoreBundle.xcscheme</key>
|
<key>AgoraLyricsScore-AgoraLyricsScoreBundle.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>6</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AgoraLyricsScore.xcscheme</key>
|
<key>AgoraLyricsScore.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>5</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AgoraRtcEngine_iOS.xcscheme</key>
|
<key>AgoraRtcEngine_iOS.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>7</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AlipaySDK-iOS.xcscheme</key>
|
<key>AlipaySDK-iOS.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>8</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AliyunOSSiOS-AliyunOSSiOS_Privacy.xcscheme</key>
|
<key>AliyunOSSiOS-AliyunOSSiOS_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>10</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AliyunOSSiOS.xcscheme</key>
|
<key>AliyunOSSiOS.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>9</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>AvoidCrash.xcscheme</key>
|
<key>AvoidCrash.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>11</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>BRPickerView-BRPickerView.Privacy.xcscheme</key>
|
<key>BRPickerView-BRPickerView.Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>13</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>BRPickerView.xcscheme</key>
|
<key>BRPickerView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>12</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Bugly.xcscheme</key>
|
<key>Bugly.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>14</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>FMDB-FMDB_Privacy.xcscheme</key>
|
<key>FMDB-FMDB_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>16</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>FMDB.xcscheme</key>
|
<key>FMDB.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
</dict>
|
||||||
<integer>15</integer>
|
<key>IQKeyboardManager-IQKeyboardManager.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
<key>IQKeyboardManager.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>JXCategoryView-JXCategoryView.xcscheme</key>
|
<key>JXCategoryView-JXCategoryView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>18</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>JXCategoryView.xcscheme</key>
|
<key>JXCategoryView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>17</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>JXPagingView-JXPagerView.xcscheme</key>
|
<key>JXPagingView-JXPagerView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>20</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>JXPagingView.xcscheme</key>
|
<key>JXPagingView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>19</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>LLDebugTool.xcscheme</key>
|
<key>LLDebugTool.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>22</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>MBProgressHUD.xcscheme</key>
|
<key>MBProgressHUD.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>24</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>MJRefresh-MJRefresh.Privacy.xcscheme</key>
|
<key>MJRefresh-MJRefresh.Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>26</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>MJRefresh.xcscheme</key>
|
<key>MJRefresh.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>25</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>MQTTClient.xcscheme</key>
|
<key>MQTTClient.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>27</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Masonry.xcscheme</key>
|
<key>Masonry.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>23</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Pods-QXLive.xcscheme</key>
|
<key>Pods-QXLive.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>28</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Pods-QXLiveDev.xcscheme</key>
|
<key>Pods-QXLiveDev.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>29</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Protobuf-Protobuf_Privacy.xcscheme</key>
|
<key>Protobuf-Protobuf_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>31</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Protobuf.xcscheme</key>
|
<key>Protobuf.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>30</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>QGVAPlayer.xcscheme</key>
|
<key>QGVAPlayer.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>32</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>ReactiveObjC.xcscheme</key>
|
<key>ReactiveObjC.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>33</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>SDCycleScrollView.xcscheme</key>
|
<key>SDCycleScrollView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>34</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>SDWebImage-SDWebImage.xcscheme</key>
|
<key>SDWebImage-SDWebImage.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>36</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>SDWebImage.xcscheme</key>
|
<key>SDWebImage.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>35</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>SDWebImageWebPCoder.xcscheme</key>
|
<key>SDWebImageWebPCoder.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>37</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>SSZipArchive.xcscheme</key>
|
<key>SSZipArchive.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>38</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>SVGAPlayer.xcscheme</key>
|
<key>SVGAPlayer.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>39</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TIMCommon-TIMCommon_Privacy.xcscheme</key>
|
<key>TIMCommon-TIMCommon_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>42</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TIMCommon.xcscheme</key>
|
<key>TIMCommon.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>41</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TIMPush-TIMPush_Privacy.xcscheme</key>
|
<key>TIMPush-TIMPush_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>44</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TIMPush.xcscheme</key>
|
<key>TIMPush.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>43</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TUIChat-TUIChat_Privacy.xcscheme</key>
|
<key>TUIChat-TUIChat_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>46</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TUIChat.xcscheme</key>
|
<key>TUIChat.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>45</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TUIConversation-TUIConversation_Privacy.xcscheme</key>
|
<key>TUIConversation-TUIConversation_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>48</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TUIConversation.xcscheme</key>
|
<key>TUIConversation.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>47</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TUICore-TUICore_Privacy.xcscheme</key>
|
<key>TUICore-TUICore_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>50</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TUICore.xcscheme</key>
|
<key>TUICore.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>49</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TXIMSDK_Plus_iOS_XCFramework-TXIMSDK_Plus_iOS_XCFramework_Privacy.xcscheme</key>
|
<key>TXIMSDK_Plus_iOS_XCFramework-TXIMSDK_Plus_iOS_XCFramework_Privacy.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>52</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TXIMSDK_Plus_iOS_XCFramework.xcscheme</key>
|
<key>TXIMSDK_Plus_iOS_XCFramework.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>51</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TZImagePickerController.xcscheme</key>
|
<key>TZImagePickerController.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>53</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>TencentCloudHuiyanSDKFace_framework.xcscheme</key>
|
<key>TencentCloudHuiyanSDKFace_framework.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>40</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>WechatOpenSDK-XCFramework.xcscheme</key>
|
<key>WechatOpenSDK-XCFramework.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>54</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YBImageBrowser.xcscheme</key>
|
<key>YBImageBrowser.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>55</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YYCache.xcscheme</key>
|
<key>YYCache.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>56</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YYCategories.xcscheme</key>
|
<key>YYCategories.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>57</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YYImage.xcscheme</key>
|
<key>YYImage.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>58</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YYModel.xcscheme</key>
|
<key>YYModel.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>59</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YYText.xcscheme</key>
|
<key>YYText.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>60</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>YYWebImage.xcscheme</key>
|
<key>YYWebImage.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>61</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>Zip.xcscheme</key>
|
<key>Zip.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>62</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>libwebp.xcscheme</key>
|
<key>libwebp.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
|
||||||
<integer>21</integer>
|
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SuppressBuildableAutocreation</key>
|
<key>SuppressBuildableAutocreation</key>
|
||||||
|
|||||||
26
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-Info.plist
generated
Normal file
26
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-Info.plist
generated
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?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>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>${PODS_DEVELOPMENT_LANGUAGE}</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${PRODUCT_NAME}</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>6.5.19</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
5
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-dummy.m
generated
Normal file
5
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-dummy.m
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
@interface PodsDummy_IQKeyboardManager : NSObject
|
||||||
|
@end
|
||||||
|
@implementation PodsDummy_IQKeyboardManager
|
||||||
|
@end
|
||||||
12
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-prefix.pch
generated
Normal file
12
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-prefix.pch
generated
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#ifdef __OBJC__
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#ifndef FOUNDATION_EXPORT
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
#define FOUNDATION_EXPORT extern "C"
|
||||||
|
#else
|
||||||
|
#define FOUNDATION_EXPORT extern
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
29
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-umbrella.h
generated
Normal file
29
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-umbrella.h
generated
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#ifdef __OBJC__
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#ifndef FOUNDATION_EXPORT
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
#define FOUNDATION_EXPORT extern "C"
|
||||||
|
#else
|
||||||
|
#define FOUNDATION_EXPORT extern
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import "IQKeyboardManager.h"
|
||||||
|
#import "IQKeyboardReturnKeyHandler.h"
|
||||||
|
#import "IQUIScrollView+Additions.h"
|
||||||
|
#import "IQUITextFieldView+Additions.h"
|
||||||
|
#import "IQUIView+Hierarchy.h"
|
||||||
|
#import "IQUIViewController+Additions.h"
|
||||||
|
#import "IQKeyboardManagerConstants.h"
|
||||||
|
#import "IQTextView.h"
|
||||||
|
#import "IQBarButtonItem.h"
|
||||||
|
#import "IQPreviousNextView.h"
|
||||||
|
#import "IQTitleBarButtonItem.h"
|
||||||
|
#import "IQToolbar.h"
|
||||||
|
#import "IQUIView+IQKeyboardToolbar.h"
|
||||||
|
|
||||||
|
FOUNDATION_EXPORT double IQKeyboardManagerVersionNumber;
|
||||||
|
FOUNDATION_EXPORT const unsigned char IQKeyboardManagerVersionString[];
|
||||||
|
|
||||||
13
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.debug.xcconfig
generated
Normal file
13
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.debug.xcconfig
generated
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
|
OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit"
|
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
|
||||||
|
PODS_ROOT = ${SRCROOT}
|
||||||
|
PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManager
|
||||||
|
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||||
|
SKIP_INSTALL = YES
|
||||||
|
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||||
6
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.modulemap
generated
Normal file
6
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.modulemap
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
framework module IQKeyboardManager {
|
||||||
|
umbrella header "IQKeyboardManager-umbrella.h"
|
||||||
|
|
||||||
|
export *
|
||||||
|
module * { export * }
|
||||||
|
}
|
||||||
13
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.release.xcconfig
generated
Normal file
13
Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.release.xcconfig
generated
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
|
OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit"
|
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
|
||||||
|
PODS_ROOT = ${SRCROOT}
|
||||||
|
PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManager
|
||||||
|
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||||
|
SKIP_INSTALL = YES
|
||||||
|
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?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>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>${PODS_DEVELOPMENT_LANGUAGE}</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${PRODUCT_NAME}</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>BNDL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>6.5.19</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -161,6 +161,31 @@ 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
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
## IQKeyboardManager
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2013-2023 Iftekhar Qurashi
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
## JXCategoryView
|
## JXCategoryView
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|||||||
@@ -230,6 +230,37 @@ THE SOFTWARE.</string>
|
|||||||
<key>FooterText</key>
|
<key>FooterText</key>
|
||||||
<string>MIT License
|
<string>MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2013-2023 Iftekhar Qurashi
|
||||||
|
|
||||||
|
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.
|
||||||
|
</string>
|
||||||
|
<key>License</key>
|
||||||
|
<string>MIT</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string>IQKeyboardManager</string>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>PSGroupSpecifier</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>FooterText</key>
|
||||||
|
<string>MIT License
|
||||||
|
|
||||||
Copyright (c) 2018 暴走的鑫鑫
|
Copyright (c) 2018 暴走的鑫鑫
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ ${BUILT_PRODUCTS_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework
|
|||||||
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
||||||
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
||||||
|
${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework
|
${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AliyunOSSiOS.framework
|
|||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
||||||
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LLDebugTool.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LLDebugTool.framework
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ ${BUILT_PRODUCTS_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework
|
|||||||
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
||||||
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
||||||
|
${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework
|
${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AliyunOSSiOS.framework
|
|||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
||||||
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
|
|||||||
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
||||||
|
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework"
|
||||||
@@ -247,6 +248,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
|
|||||||
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
||||||
|
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
DEFINES_MODULE = YES
|
DEFINES_MODULE = YES
|
||||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool/LLDebugTool.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool/LLDebugTool.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
||||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LLDebugTool" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "MapKit" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "QuickLook" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "IQKeyboardManager" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LLDebugTool" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "MapKit" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "QuickLook" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
||||||
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
||||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
DEFINES_MODULE = YES
|
DEFINES_MODULE = YES
|
||||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
||||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "IQKeyboardManager" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
||||||
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
||||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|||||||
@@ -161,6 +161,31 @@ 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
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
## IQKeyboardManager
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2013-2023 Iftekhar Qurashi
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
## JXCategoryView
|
## JXCategoryView
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|||||||
@@ -230,6 +230,37 @@ THE SOFTWARE.</string>
|
|||||||
<key>FooterText</key>
|
<key>FooterText</key>
|
||||||
<string>MIT License
|
<string>MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2013-2023 Iftekhar Qurashi
|
||||||
|
|
||||||
|
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.
|
||||||
|
</string>
|
||||||
|
<key>License</key>
|
||||||
|
<string>MIT</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string>IQKeyboardManager</string>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>PSGroupSpecifier</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>FooterText</key>
|
||||||
|
<string>MIT License
|
||||||
|
|
||||||
Copyright (c) 2018 暴走的鑫鑫
|
Copyright (c) 2018 暴走的鑫鑫
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ ${BUILT_PRODUCTS_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework
|
|||||||
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
||||||
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
||||||
|
${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework
|
${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AliyunOSSiOS.framework
|
|||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
||||||
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LLDebugTool.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LLDebugTool.framework
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ ${BUILT_PRODUCTS_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework
|
|||||||
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework
|
||||||
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework
|
||||||
|
${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework
|
||||||
${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework
|
${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AliyunOSSiOS.framework
|
|||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AvoidCrash.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BRPickerView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
|
||||||
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
|
|||||||
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
||||||
|
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/LLDebugTool/LLDebugTool.framework"
|
||||||
@@ -247,6 +248,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
|
|||||||
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/AvoidCrash/AvoidCrash.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/BRPickerView/BRPickerView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework"
|
||||||
|
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
DEFINES_MODULE = YES
|
DEFINES_MODULE = YES
|
||||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool/LLDebugTool.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool/LLDebugTool.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
||||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LLDebugTool" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "MapKit" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "QuickLook" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "IQKeyboardManager" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LLDebugTool" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "MapKit" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "QuickLook" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
||||||
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LLDebugTool" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
||||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
DEFINES_MODULE = YES
|
DEFINES_MODULE = YES
|
||||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/Zip" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_ROOT}/../TencentCloudHuiyanSDKFace_framework/Libs" "${PODS_ROOT}/AgoraComponetLog" "${PODS_ROOT}/AgoraInfra_iOS" "${PODS_ROOT}/AgoraRtcEngine_iOS" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/TIMPush" "${PODS_ROOT}/TXIMSDK_Plus_iOS_XCFramework" "${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_ROOT}/YYImage/Vendor" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraComponetLog" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraInfra_iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAEC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AIAECLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AINSLL" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/AudioBeauty" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ClearVision" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ContentInspect" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceCapture" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/FaceDetection" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/LipSync" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/ReplayKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/RtcBasic" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/SpatialAudio" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VQA" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoAv1CodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecDec" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VideoCodecEnc" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AgoraRtcEngine_iOS/VirtualBackground" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TIMPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) SD_WEBP=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore/AgoraLyricsScore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash/AvoidCrash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient/MQTTClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer/QGVAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon/TIMCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIChat/TUIChat.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation/TUIConversation.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TUICore/TUICore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser/YBImageBrowser.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCache/YYCache.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategories/YYCategories.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage/YYImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage/YYWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Zip/Zip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" **/TIMPush.xcframework/ios-arm64/TIMPush.framework/Headers/*.h
|
||||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"iconv" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AgoraAiEchoCancellationExtension" -framework "AgoraAiEchoCancellationLLExtension" -framework "AgoraAiNoiseSuppressionExtension" -framework "AgoraAiNoiseSuppressionLLExtension" -framework "AgoraAudioBeautyExtension" -framework "AgoraClearVisionExtension" -framework "AgoraComponetLog" -framework "AgoraContentInspectExtension" -framework "AgoraFaceCaptureExtension" -framework "AgoraFaceDetectionExtension" -framework "AgoraLipSyncExtension" -framework "AgoraLyricsScore" -framework "AgoraReplayKitExtension" -framework "AgoraRtcKit" -framework "AgoraSoundTouch" -framework "AgoraSpatialAudioExtension" -framework "AgoraVideoAv1DecoderExtension" -framework "AgoraVideoAv1EncoderExtension" -framework "AgoraVideoDecoderExtension" -framework "AgoraVideoEncoderExtension" -framework "AgoraVideoQualityAnalyzerExtension" -framework "AgoraVideoSegmentationExtension" -framework "Agorafdkaac" -framework "Agoraffmpeg" -framework "AlipaySDK" -framework "AliyunOSSiOS" -framework "AssetsLibrary" -framework "AvoidCrash" -framework "BRPickerView" -framework "Bugly" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "FMDB" -framework "Foundation" -framework "IQKeyboardManager" -framework "ImSDK_Plus" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MQTTClient" -framework "Masonry" -framework "MediaPlayer" -framework "Metal" -framework "MetalKit" -framework "MobileCoreServices" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QGVAPlayer" -framework "QuartzCore" -framework "ReactiveObjC" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SDWebImageWebPCoder" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SystemConfiguration" -framework "TIMCommon" -framework "TIMPush" -framework "TUIChat" -framework "TUIConversation" -framework "TUICore" -framework "TZImagePickerController" -framework "TencentCloudHuiyanSDKFace" -framework "TuringShieldCamRisk" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "YBImageBrowser" -framework "YTCommonLiveness" -framework "YTCv" -framework "YTFaceAlignmentTinyLiveness" -framework "YTFaceDetectorLiveness" -framework "YTFaceLiveReflect" -framework "YTFaceTrackerLiveness" -framework "YTPoseDetector" -framework "YYCache" -framework "YYCategories" -framework "YYImage" -framework "YYModel" -framework "YYText" -framework "YYWebImage" -framework "YtSDKKitFrameworkTool" -framework "Zip" -framework "aosl" -framework "libwebp" -framework "tnnliveness" -framework "video_dec" -framework "video_enc" -weak_framework "AgoraAiEchoCancellationExtension" -weak_framework "AgoraAiEchoCancellationLLExtension" -weak_framework "AgoraAiNoiseSuppressionExtension" -weak_framework "AgoraAiNoiseSuppressionLLExtension" -weak_framework "AgoraAudioBeautyExtension" -weak_framework "AgoraClearVisionExtension" -weak_framework "AgoraContentInspectExtension" -weak_framework "AgoraFaceCaptureExtension" -weak_framework "AgoraFaceDetectionExtension" -weak_framework "AgoraLipSyncExtension" -weak_framework "AgoraReplayKitExtension" -weak_framework "AgoraRtcKit" -weak_framework "AgoraSoundTouch" -weak_framework "AgoraSpatialAudioExtension" -weak_framework "AgoraVideoAv1DecoderExtension" -weak_framework "AgoraVideoAv1EncoderExtension" -weak_framework "AgoraVideoDecoderExtension" -weak_framework "AgoraVideoEncoderExtension" -weak_framework "AgoraVideoQualityAnalyzerExtension" -weak_framework "AgoraVideoSegmentationExtension" -weak_framework "Agorafdkaac" -weak_framework "Agoraffmpeg" -weak_framework "video_dec" -weak_framework "video_enc"
|
||||||
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraComponetLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraInfra_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraLyricsScore" "-F${PODS_CONFIGURATION_BUILD_DIR}/AgoraRtcEngine_iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/AvoidCrash" "-F${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MQTTClient" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "-F${PODS_CONFIGURATION_BUILD_DIR}/QGVAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "-F${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/TIMPush" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIChat" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUIConversation" "-F${PODS_CONFIGURATION_BUILD_DIR}/TUICore" "-F${PODS_CONFIGURATION_BUILD_DIR}/TXIMSDK_Plus_iOS_XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "-F${PODS_CONFIGURATION_BUILD_DIR}/TencentCloudHuiyanSDKFace_framework" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK-XCFramework" "-F${PODS_CONFIGURATION_BUILD_DIR}/YBImageBrowser" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYCategories" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/Zip" "-F${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
|
||||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|||||||
@@ -7,14 +7,15 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
78070522CA904B290E0D5B8D /* (null) in Frameworks */ = {isa = PBXBuildFile; };
|
4AF8AC7F832AA7A70929AB76 /* Pods_QXLiveDev.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D53181714A7F955CA60F4AB /* Pods_QXLiveDev.framework */; };
|
||||||
|
95946C0C2E56B9FA00ECFA94 /* QXLiveScreenDev.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
|
9599C76B2E97631E008D19F6 /* libswiftCoreAudio.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9599C76A2E97631E008D19F6 /* libswiftCoreAudio.tbd */; };
|
||||||
95C29E9E2E19166700F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
95C29E9E2E19166700F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||||
95C29EA62E19166700F2524D /* QXLiveScreen.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
95C29EA62E19166700F2524D /* QXLiveScreen.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
95C29EAB2E19173300F2524D /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
95C29EAB2E19173300F2524D /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
||||||
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||||
95C327442E4C4068004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
95C327442E4C4068004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
||||||
95C327452E4C4068004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
95C327452E4C4068004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||||
95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
|
||||||
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||||
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
||||||
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
||||||
@@ -23,10 +24,6 @@
|
|||||||
95C3EFF42E49F44A004B2D82 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */; };
|
95C3EFF42E49F44A004B2D82 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */; };
|
||||||
95C3EFF52E49F44A004B2D82 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FC2DEF0AAC0031E710 /* libiconv.tbd */; };
|
95C3EFF52E49F44A004B2D82 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FC2DEF0AAC0031E710 /* libiconv.tbd */; };
|
||||||
95C3EFF62E49F44A004B2D82 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FA2DEF0AA10031E710 /* Security.framework */; };
|
95C3EFF62E49F44A004B2D82 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FA2DEF0AA10031E710 /* Security.framework */; };
|
||||||
95C3EFF72E49F44A004B2D82 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
|
|
||||||
95C3EFF82E49F44A004B2D82 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
|
|
||||||
95C3EFF92E49F44A004B2D82 /* Pods_QXLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98CA0F917710DFFD98725970 /* Pods_QXLive.framework */; };
|
|
||||||
95C3F2602E49F6E7004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
|
||||||
95F204FB2DEF0AA10031E710 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FA2DEF0AA10031E710 /* Security.framework */; };
|
95F204FB2DEF0AA10031E710 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FA2DEF0AA10031E710 /* Security.framework */; };
|
||||||
95F204FD2DEF0AAC0031E710 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FC2DEF0AAC0031E710 /* libiconv.tbd */; };
|
95F204FD2DEF0AAC0031E710 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FC2DEF0AAC0031E710 /* libiconv.tbd */; };
|
||||||
95F204FF2DEF0AB20031E710 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */; };
|
95F204FF2DEF0AB20031E710 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */; };
|
||||||
@@ -34,8 +31,7 @@
|
|||||||
95F205032DEF0ABD0031E710 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205022DEF0ABD0031E710 /* libsqlite3.tbd */; };
|
95F205032DEF0ABD0031E710 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205022DEF0ABD0031E710 /* libsqlite3.tbd */; };
|
||||||
95F205052DEF0AC20031E710 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
95F205052DEF0AC20031E710 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
||||||
95F205072DEF0AD20031E710 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
95F205072DEF0AD20031E710 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
||||||
A1B3F48CEADC04AE7D5AE48B /* Pods_QXLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98CA0F917710DFFD98725970 /* Pods_QXLive.framework */; };
|
BB879DD0574F50799C6C43C6 /* Pods_QXLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75B6DED9AC5D04AA580AC1B3 /* Pods_QXLive.framework */; };
|
||||||
C5F9FD21F2F63A6022CAAF48 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@@ -53,6 +49,13 @@
|
|||||||
remoteGlobalIDString = 9593D7162DB9C95C0082CA57;
|
remoteGlobalIDString = 9593D7162DB9C95C0082CA57;
|
||||||
remoteInfo = QXLive;
|
remoteInfo = QXLive;
|
||||||
};
|
};
|
||||||
|
95946C0D2E56BA0000ECFA94 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 95C327412E4C4068004B2D82;
|
||||||
|
remoteInfo = QXLiveScreenDev;
|
||||||
|
};
|
||||||
95C29EA42E19166700F2524D /* PBXContainerItemProxy */ = {
|
95C29EA42E19166700F2524D /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
||||||
@@ -60,13 +63,6 @@
|
|||||||
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
||||||
remoteInfo = QXLiveScreen;
|
remoteInfo = QXLiveScreen;
|
||||||
};
|
};
|
||||||
95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = 95C327412E4C4068004B2D82;
|
|
||||||
remoteInfo = QXLiveScreenDev;
|
|
||||||
};
|
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
@@ -87,7 +83,7 @@
|
|||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 13;
|
dstSubfolderSpec = 13;
|
||||||
files = (
|
files = (
|
||||||
95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */,
|
95946C0C2E56B9FA00ECFA94 /* QXLiveScreenDev.appex in Embed Foundation Extensions */,
|
||||||
);
|
);
|
||||||
name = "Embed Foundation Extensions";
|
name = "Embed Foundation Extensions";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@@ -95,11 +91,16 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
2D163E917E90CDC07837F1A7 /* Pods_QXLiveDev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QXLiveDev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
5D53181714A7F955CA60F4AB /* Pods_QXLiveDev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QXLiveDev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
7270179B583CF68223E0AC0A /* Pods-QXLiveDev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLiveDev.debug.xcconfig"; path = "Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev.debug.xcconfig"; sourceTree = "<group>"; };
|
7270179B583CF68223E0AC0A /* Pods-QXLiveDev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLiveDev.debug.xcconfig"; path = "Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
75B6DED9AC5D04AA580AC1B3 /* Pods_QXLive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QXLive.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
9537146C2E56B56C00569E1E /* CoreAudioTypes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioTypes.framework; path = System/Library/Frameworks/CoreAudioTypes.framework; sourceTree = SDKROOT; };
|
||||||
|
9537146F2E56B59100569E1E /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
|
||||||
|
953714712E56B59B00569E1E /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
|
||||||
9593D7172DB9C95C0082CA57 /* QXLive.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QXLive.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
9593D7172DB9C95C0082CA57 /* QXLive.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QXLive.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
9593D7322DB9C95E0082CA57 /* QXLiveTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QXLiveTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
9593D7322DB9C95E0082CA57 /* QXLiveTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QXLiveTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
9593D73C2DB9C95E0082CA57 /* QXLiveUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QXLiveUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
9593D73C2DB9C95E0082CA57 /* QXLiveUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QXLiveUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
9599C76A2E97631E008D19F6 /* libswiftCoreAudio.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libswiftCoreAudio.tbd; path = usr/lib/swift/libswiftCoreAudio.tbd; sourceTree = SDKROOT; };
|
||||||
95C2925B2E18BBF800F2524D /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
|
95C2925B2E18BBF800F2524D /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
|
||||||
95C292682E18BBF800F2524D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
95C292682E18BBF800F2524D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||||
95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = AgoraReplayKitExtension.xcframework; path = Pods/AgoraRtcEngine_iOS/AgoraReplayKitExtension.xcframework; sourceTree = "<group>"; };
|
95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = AgoraReplayKitExtension.xcframework; path = Pods/AgoraRtcEngine_iOS/AgoraReplayKitExtension.xcframework; sourceTree = "<group>"; };
|
||||||
@@ -118,7 +119,6 @@
|
|||||||
95F205022DEF0ABD0031E710 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
|
95F205022DEF0ABD0031E710 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
|
||||||
95F205042DEF0AC20031E710 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
|
95F205042DEF0AC20031E710 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
|
||||||
95F205062DEF0AD20031E710 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
95F205062DEF0AD20031E710 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||||
98CA0F917710DFFD98725970 /* Pods_QXLive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QXLive.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
C9712338C60B86BE40C57C07 /* Pods-QXLiveDev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLiveDev.release.xcconfig"; path = "Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev.release.xcconfig"; sourceTree = "<group>"; };
|
C9712338C60B86BE40C57C07 /* Pods-QXLiveDev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLiveDev.release.xcconfig"; path = "Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
DB46C80395B0DD337551A591 /* Pods-QXLive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLive.release.xcconfig"; path = "Target Support Files/Pods-QXLive/Pods-QXLive.release.xcconfig"; sourceTree = "<group>"; };
|
DB46C80395B0DD337551A591 /* Pods-QXLive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLive.release.xcconfig"; path = "Target Support Files/Pods-QXLive/Pods-QXLive.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLive.debug.xcconfig"; path = "Target Support Files/Pods-QXLive/Pods-QXLive.debug.xcconfig"; sourceTree = "<group>"; };
|
F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLive.debug.xcconfig"; path = "Target Support Files/Pods-QXLive/Pods-QXLive.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
@@ -152,14 +152,6 @@
|
|||||||
membershipExceptions = (
|
membershipExceptions = (
|
||||||
Info.plist,
|
Info.plist,
|
||||||
Other/Info.plist,
|
Other/Info.plist,
|
||||||
Other/QXHelper.swift,
|
|
||||||
);
|
|
||||||
target = 95C3EFE92E49F44A004B2D82 /* QXLiveDev */;
|
|
||||||
};
|
|
||||||
95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */ = {
|
|
||||||
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
|
||||||
membershipExceptions = (
|
|
||||||
SampleHandler.m,
|
|
||||||
);
|
);
|
||||||
target = 95C3EFE92E49F44A004B2D82 /* QXLiveDev */;
|
target = 95C3EFE92E49F44A004B2D82 /* QXLiveDev */;
|
||||||
};
|
};
|
||||||
@@ -189,7 +181,6 @@
|
|||||||
isa = PBXFileSystemSynchronizedRootGroup;
|
isa = PBXFileSystemSynchronizedRootGroup;
|
||||||
exceptions = (
|
exceptions = (
|
||||||
95C29EAA2E19166700F2524D /* Exceptions for "QXLiveScreen" folder in "QXLiveScreen" target */,
|
95C29EAA2E19166700F2524D /* Exceptions for "QXLiveScreen" folder in "QXLiveScreen" target */,
|
||||||
95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */,
|
|
||||||
95C3274B2E4C4068004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveScreenDev" target */,
|
95C3274B2E4C4068004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveScreenDev" target */,
|
||||||
);
|
);
|
||||||
path = QXLiveScreen;
|
path = QXLiveScreen;
|
||||||
@@ -202,6 +193,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
9599C76B2E97631E008D19F6 /* libswiftCoreAudio.tbd in Frameworks */,
|
||||||
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */,
|
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */,
|
||||||
95F205072DEF0AD20031E710 /* libz.tbd in Frameworks */,
|
95F205072DEF0AD20031E710 /* libz.tbd in Frameworks */,
|
||||||
95F205052DEF0AC20031E710 /* CoreTelephony.framework in Frameworks */,
|
95F205052DEF0AC20031E710 /* CoreTelephony.framework in Frameworks */,
|
||||||
@@ -210,9 +202,7 @@
|
|||||||
95F204FF2DEF0AB20031E710 /* SystemConfiguration.framework in Frameworks */,
|
95F204FF2DEF0AB20031E710 /* SystemConfiguration.framework in Frameworks */,
|
||||||
95F204FD2DEF0AAC0031E710 /* libiconv.tbd in Frameworks */,
|
95F204FD2DEF0AAC0031E710 /* libiconv.tbd in Frameworks */,
|
||||||
95F204FB2DEF0AA10031E710 /* Security.framework in Frameworks */,
|
95F204FB2DEF0AA10031E710 /* Security.framework in Frameworks */,
|
||||||
78070522CA904B290E0D5B8D /* (null) in Frameworks */,
|
BB879DD0574F50799C6C43C6 /* Pods_QXLive.framework in Frameworks */,
|
||||||
C5F9FD21F2F63A6022CAAF48 /* (null) in Frameworks */,
|
|
||||||
A1B3F48CEADC04AE7D5AE48B /* Pods_QXLive.framework in Frameworks */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -252,7 +242,6 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
95C3F2602E49F6E7004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */,
|
|
||||||
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */,
|
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */,
|
||||||
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */,
|
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */,
|
||||||
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */,
|
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */,
|
||||||
@@ -261,9 +250,7 @@
|
|||||||
95C3EFF42E49F44A004B2D82 /* SystemConfiguration.framework in Frameworks */,
|
95C3EFF42E49F44A004B2D82 /* SystemConfiguration.framework in Frameworks */,
|
||||||
95C3EFF52E49F44A004B2D82 /* libiconv.tbd in Frameworks */,
|
95C3EFF52E49F44A004B2D82 /* libiconv.tbd in Frameworks */,
|
||||||
95C3EFF62E49F44A004B2D82 /* Security.framework in Frameworks */,
|
95C3EFF62E49F44A004B2D82 /* Security.framework in Frameworks */,
|
||||||
95C3EFF72E49F44A004B2D82 /* (null) in Frameworks */,
|
4AF8AC7F832AA7A70929AB76 /* Pods_QXLiveDev.framework in Frameworks */,
|
||||||
95C3EFF82E49F44A004B2D82 /* (null) in Frameworks */,
|
|
||||||
95C3EFF92E49F44A004B2D82 /* Pods_QXLive.framework in Frameworks */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -284,6 +271,10 @@
|
|||||||
4B6F40DB8328A2B2BB1BF79D /* Frameworks */ = {
|
4B6F40DB8328A2B2BB1BF79D /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9599C76A2E97631E008D19F6 /* libswiftCoreAudio.tbd */,
|
||||||
|
953714712E56B59B00569E1E /* CoreAudioKit.framework */,
|
||||||
|
9537146F2E56B59100569E1E /* CoreAudio.framework */,
|
||||||
|
9537146C2E56B56C00569E1E /* CoreAudioTypes.framework */,
|
||||||
95C292AE2E18ED6300F2524D /* Accelerate.framework */,
|
95C292AE2E18ED6300F2524D /* Accelerate.framework */,
|
||||||
95C292AB2E18ED4A00F2524D /* MetalKit.framework */,
|
95C292AB2E18ED4A00F2524D /* MetalKit.framework */,
|
||||||
95C292A92E18ED3C00F2524D /* libc++.tbd */,
|
95C292A92E18ED3C00F2524D /* libc++.tbd */,
|
||||||
@@ -296,10 +287,10 @@
|
|||||||
95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */,
|
95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */,
|
||||||
95F204FC2DEF0AAC0031E710 /* libiconv.tbd */,
|
95F204FC2DEF0AAC0031E710 /* libiconv.tbd */,
|
||||||
95F204FA2DEF0AA10031E710 /* Security.framework */,
|
95F204FA2DEF0AA10031E710 /* Security.framework */,
|
||||||
2D163E917E90CDC07837F1A7 /* Pods_QXLiveDev.framework */,
|
|
||||||
95C2925B2E18BBF800F2524D /* ReplayKit.framework */,
|
95C2925B2E18BBF800F2524D /* ReplayKit.framework */,
|
||||||
95C292682E18BBF800F2524D /* UIKit.framework */,
|
95C292682E18BBF800F2524D /* UIKit.framework */,
|
||||||
98CA0F917710DFFD98725970 /* Pods_QXLive.framework */,
|
75B6DED9AC5D04AA580AC1B3 /* Pods_QXLive.framework */,
|
||||||
|
5D53181714A7F955CA60F4AB /* Pods_QXLiveDev.framework */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -456,7 +447,7 @@
|
|||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
95C3274F2E4C4099004B2D82 /* PBXTargetDependency */,
|
95946C0E2E56BA0000ECFA94 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
fileSystemSynchronizedGroups = (
|
fileSystemSynchronizedGroups = (
|
||||||
9593D7192DB9C95C0082CA57 /* QXLive */,
|
9593D7192DB9C95C0082CA57 /* QXLive */,
|
||||||
@@ -618,7 +609,7 @@
|
|||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
);
|
);
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"$(DERIVED_FILE_DIR)/Pods-QXLive-checkManifestLockResult.txt",
|
"$(DERIVED_FILE_DIR)/Pods-QXLiveDev-checkManifestLockResult.txt",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
@@ -631,15 +622,15 @@
|
|||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
95C3EFFC2E49F44A004B2D82 /* [CP] Copy Pods Resources */ = {
|
95C3EFFC2E49F44A004B2D82 /* [CP] Copy Pods Resources */ = {
|
||||||
@@ -648,15 +639,15 @@
|
|||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-resources-${CONFIGURATION}-input-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
name = "[CP] Copy Pods Resources";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-resources-${CONFIGURATION}-output-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
E69B725D5CF59CD6582C8AA8 /* [CP] Embed Pods Frameworks */ = {
|
E69B725D5CF59CD6582C8AA8 /* [CP] Embed Pods Frameworks */ = {
|
||||||
@@ -734,16 +725,16 @@
|
|||||||
target = 9593D7162DB9C95C0082CA57 /* QXLive */;
|
target = 9593D7162DB9C95C0082CA57 /* QXLive */;
|
||||||
targetProxy = 9593D73D2DB9C95E0082CA57 /* PBXContainerItemProxy */;
|
targetProxy = 9593D73D2DB9C95E0082CA57 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
|
95946C0E2E56BA0000ECFA94 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
|
||||||
|
targetProxy = 95946C0D2E56BA0000ECFA94 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
95C29EA52E19166700F2524D /* PBXTargetDependency */ = {
|
95C29EA52E19166700F2524D /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
||||||
targetProxy = 95C29EA42E19166700F2524D /* PBXContainerItemProxy */;
|
targetProxy = 95C29EA42E19166700F2524D /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
95C3274F2E4C4099004B2D82 /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
|
|
||||||
targetProxy = 95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */;
|
|
||||||
};
|
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
@@ -755,8 +746,9 @@
|
|||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||||
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 3;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
@@ -776,7 +768,7 @@
|
|||||||
);
|
);
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = QXLive/Info.plist;
|
INFOPLIST_FILE = QXLive/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声语音";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
||||||
@@ -791,9 +783,14 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.1.0;
|
LIBRARY_SEARCH_PATHS = (
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
"$(inherited)",
|
||||||
|
"$(SDKROOT)/usr/lib/swift",
|
||||||
|
);
|
||||||
|
MARKETING_VERSION = 1.0.10;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.xscm.midi;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
@@ -815,8 +812,9 @@
|
|||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||||
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 3;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
@@ -836,7 +834,7 @@
|
|||||||
);
|
);
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = QXLive/Info.plist;
|
INFOPLIST_FILE = QXLive/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声语音";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
||||||
@@ -851,9 +849,14 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.1.0;
|
LIBRARY_SEARCH_PATHS = (
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
"$(inherited)",
|
||||||
|
"$(SDKROOT)/usr/lib/swift",
|
||||||
|
);
|
||||||
|
MARKETING_VERSION = 1.0.10;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.xscm.midi;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
@@ -1061,7 +1064,7 @@
|
|||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = QXLiveScreen/Info.plist;
|
INFOPLIST_FILE = QXLiveScreen/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地";
|
||||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
@@ -1070,7 +1073,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.QXLiveScreen;
|
PRODUCT_BUNDLE_IDENTIFIER = com.xscm.midi.QXLiveScreen;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
@@ -1087,7 +1090,7 @@
|
|||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = QXLiveScreen/Info.plist;
|
INFOPLIST_FILE = QXLiveScreen/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地";
|
||||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
@@ -1096,7 +1099,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.QXLiveScreen;
|
PRODUCT_BUNDLE_IDENTIFIER = com.xscm.midi.QXLiveScreen;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
@@ -1113,7 +1116,7 @@
|
|||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = "QXLiveScreen copy-Info.plist";
|
INFOPLIST_FILE = "QXLiveScreen copy-Info.plist";
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地";
|
||||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
@@ -1139,7 +1142,7 @@
|
|||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = "QXLiveScreen copy-Info.plist";
|
INFOPLIST_FILE = "QXLiveScreen copy-Info.plist";
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地";
|
||||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
@@ -1158,9 +1161,9 @@
|
|||||||
};
|
};
|
||||||
95C3F0002E49F44A004B2D82 /* Debug */ = {
|
95C3F0002E49F44A004B2D82 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */;
|
baseConfigurationReference = 7270179B583CF68223E0AC0A /* Pods-QXLiveDev.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||||
@@ -1185,7 +1188,7 @@
|
|||||||
);
|
);
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = QXLive/QXLiveDev.plist;
|
INFOPLIST_FILE = QXLive/QXLiveDev.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声测试";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地测试";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
||||||
@@ -1200,7 +1203,11 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.2;
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(SDKROOT)/usr/lib/swift",
|
||||||
|
);
|
||||||
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
@@ -1218,9 +1225,9 @@
|
|||||||
};
|
};
|
||||||
95C3F0012E49F44A004B2D82 /* Release */ = {
|
95C3F0012E49F44A004B2D82 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = DB46C80395B0DD337551A591 /* Pods-QXLive.release.xcconfig */;
|
baseConfigurationReference = C9712338C60B86BE40C57C07 /* Pods-QXLiveDev.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||||
@@ -1245,7 +1252,7 @@
|
|||||||
);
|
);
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = QXLive/QXLiveDev.plist;
|
INFOPLIST_FILE = QXLive/QXLiveDev.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声测试";
|
INFOPLIST_KEY_CFBundleDisplayName = "秘地测试";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
INFOPLIST_KEY_NSCameraUsageDescription = "访问您的相机,允许可以开启直播和录制视频";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "访问您的位置,系统将获取您附近的用户进行推荐展示";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "访问您的麦克风,允许可以录制声音以便在聊天室进行语音聊天";
|
||||||
@@ -1260,7 +1267,11 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.2;
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(SDKROOT)/usr/lib/swift",
|
||||||
|
);
|
||||||
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
|||||||
@@ -74,6 +74,13 @@
|
|||||||
ReferencedContainer = "container:QXLive.xcodeproj">
|
ReferencedContainer = "container:QXLive.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
|
<EnvironmentVariables>
|
||||||
|
<EnvironmentVariable
|
||||||
|
key = "DYLD_PRINT_LIBRARIES"
|
||||||
|
value = "YES"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</EnvironmentVariable>
|
||||||
|
</EnvironmentVariables>
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|||||||
@@ -50,6 +50,13 @@
|
|||||||
ReferencedContainer = "container:QXLive.xcodeproj">
|
ReferencedContainer = "container:QXLive.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
|
<EnvironmentVariables>
|
||||||
|
<EnvironmentVariable
|
||||||
|
key = "DYLD_PRINT_LIBRARIES"
|
||||||
|
value = "YES"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</EnvironmentVariable>
|
||||||
|
</EnvironmentVariables>
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|||||||
Binary file not shown.
@@ -8,7 +8,7 @@
|
|||||||
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "C7B63820-EBBA-421E-991C-702861AC3579"
|
uuid = "C7B63820-EBBA-421E-991C-702861AC3579"
|
||||||
shouldBeEnabled = "No"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
breakpointStackSelectionBehavior = "1"
|
breakpointStackSelectionBehavior = "1"
|
||||||
@@ -16,43 +16,11 @@
|
|||||||
stopOnStyle = "0">
|
stopOnStyle = "0">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
uuid = "980EC9A0-A7C7-439F-A105-39EEF5BC03E8"
|
|
||||||
shouldBeEnabled = "Yes"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "527"
|
|
||||||
endingLineNumber = "527"
|
|
||||||
landmarkName = "-headerAction"
|
|
||||||
landmarkType = "7">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
uuid = "8CF1AB09-BCFD-4EF7-A939-87C9337AC28F"
|
|
||||||
shouldBeEnabled = "Yes"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "QXLive/Config/QXRoomMessageManager.m"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "627"
|
|
||||||
endingLineNumber = "627"
|
|
||||||
landmarkName = "-sendC2CMessage:messageType:userId:"
|
|
||||||
landmarkType = "7">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "DABF50BC-FBFE-42F2-AED7-0F7E95F9A5C8"
|
uuid = "DABF50BC-FBFE-42F2-AED7-0F7E95F9A5C8"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "No"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "QXLive/Login(登录)/Controlller/QXAccountListViewController.m"
|
filePath = "QXLive/Login(登录)/Controlller/QXAccountListViewController.m"
|
||||||
@@ -74,8 +42,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "362"
|
startingLineNumber = "364"
|
||||||
endingLineNumber = "362"
|
endingLineNumber = "364"
|
||||||
landmarkName = "-rtcEngine:remoteVideoStats:"
|
landmarkName = "-rtcEngine:remoteVideoStats:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -90,8 +58,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "366"
|
startingLineNumber = "368"
|
||||||
endingLineNumber = "366"
|
endingLineNumber = "368"
|
||||||
landmarkName = "-rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:"
|
landmarkName = "-rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -106,8 +74,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "372"
|
startingLineNumber = "374"
|
||||||
endingLineNumber = "372"
|
endingLineNumber = "374"
|
||||||
landmarkName = "-rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed:"
|
landmarkName = "-rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -122,8 +90,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "387"
|
startingLineNumber = "389"
|
||||||
endingLineNumber = "387"
|
endingLineNumber = "389"
|
||||||
landmarkName = "-rtcEngine:channelMediaRelayStateDidChange:error:"
|
landmarkName = "-rtcEngine:channelMediaRelayStateDidChange:error:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -138,8 +106,8 @@
|
|||||||
filePath = "QXLive/HomePage(声播)/View/房间/点歌/QXRoomSongListCell.m"
|
filePath = "QXLive/HomePage(声播)/View/房间/点歌/QXRoomSongListCell.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "50"
|
startingLineNumber = "51"
|
||||||
endingLineNumber = "50"
|
endingLineNumber = "51"
|
||||||
landmarkName = "-endAction:"
|
landmarkName = "-endAction:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -179,64 +147,144 @@
|
|||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "5926F40B-C857-4536-B22D-487870969718"
|
uuid = "D881CAF8-64EA-4BD0-8B32-68181DE6C199"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/活动/巡乐会/QXMeetActivityRecordView.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "133"
|
startingLineNumber = "130"
|
||||||
endingLineNumber = "133"
|
endingLineNumber = "130"
|
||||||
landmarkName = "-rtcEngine:tokenPrivilegeWillExpire:"
|
landmarkName = "-collectionView:cellForItemAtIndexPath:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "C5F458C7-AF23-4AD5-9F9D-73DD483C2AA3"
|
uuid = "C274EA02-3D19-4AD7-830B-E51529B89191"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.m"
|
filePath = "TUIKit/TUIChat/UI_Classic/Chat/TUIBaseMessageController.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "516"
|
startingLineNumber = "198"
|
||||||
endingLineNumber = "516"
|
endingLineNumber = "198"
|
||||||
landmarkName = "-configRoomDataIsJoin:"
|
landmarkName = "-loadMessage"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "E438D9B8-DAEB-45EB-91FF-D46B7C146652"
|
uuid = "12C5A5DB-D4B2-427C-8D06-DDAD1C02306A"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "QXLive/Login(登录)/Controlller/QXLoginViewController.m"
|
filePath = "QXLive/Login(登录)/Controlller/QXLoginProtocolViewController.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "477"
|
startingLineNumber = "44"
|
||||||
endingLineNumber = "477"
|
endingLineNumber = "44"
|
||||||
landmarkName = "-loginAndGetAccountListWithType:user_login:sms_code:password:code:login_token:auth_code:"
|
landmarkName = "-initSubViews"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "1AB1AD66-D71E-4958-982D-E5FA1A959946"
|
uuid = "632D2182-073F-483E-8D91-60468E8FFABB"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "QXLive/Login(登录)/Services/QXLoginNetwork.m"
|
filePath = "QXLive/Mine(音域)/Controller/个性装扮/QXDressSubViewController.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "69"
|
startingLineNumber = "92"
|
||||||
endingLineNumber = "69"
|
endingLineNumber = "92"
|
||||||
landmarkName = "+loginAccountWithUser_login:successBlock:failBlock:"
|
landmarkName = "-collectionView:didSelectItemAtIndexPath:"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "1FB8A90B-0933-4146-A9F1-F32431D2942C"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/HomePage(声播)/Controlller/QXHomeViewController.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "272"
|
||||||
|
endingLineNumber = "272"
|
||||||
|
landmarkName = "-popNiceGiftView"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "91C41D41-84C2-4A05-9BF6-B8747F755C37"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/Manager/QXAgoraEngine.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "372"
|
||||||
|
endingLineNumber = "372"
|
||||||
|
landmarkName = "-rtcEngine:videoSizeChangedOfSourceType:uid:size:rotation:"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "3BCEDF4C-4827-4B73-B097-9F3BB348F2F7"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/Manager/QXAgoraEngine.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "367"
|
||||||
|
endingLineNumber = "367"
|
||||||
|
landmarkName = "-rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "EE5372A8-67EE-4ED3-ACC6-96AF55FD878F"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/HomePage(声播)/View/房间/QXRoomTitleView.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "349"
|
||||||
|
endingLineNumber = "349"
|
||||||
|
landmarkName = "-setRoomCollect:"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "9043E93D-2910-4D2C-B503-E82326BA842B"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/活动/巡乐会/QXMeetActivityView.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "852"
|
||||||
|
endingLineNumber = "852"
|
||||||
|
landmarkName = "-setModel:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
// Do any additional setup after loading the view.
|
// Do any additional setup after loading the view.
|
||||||
self.bgImaegView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
self.bgImaegView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||||
self.bgImaegView.image = [UIImage imageNamed:@"启动页"];;
|
self.bgImaegView.image = [UIImage imageNamed:@"app_start_midi1"];;
|
||||||
self.bgImaegView.contentMode = UIViewContentModeScaleAspectFill;
|
self.bgImaegView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
[self.view addSubview:self.bgImaegView];
|
[self.view addSubview:self.bgImaegView];
|
||||||
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil];
|
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil];
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
|
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
|
||||||
if (self.childViewControllers.count > 1) {
|
if (self.childViewControllers.count > 1) {
|
||||||
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
|
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
|
||||||
if ([self.visibleViewController isKindOfClass:NSClassFromString(@"QXRoomViewController")]) {
|
if ([self.visibleViewController isKindOfClass:NSClassFromString(@"QXRoomViewController")] || [self.visibleViewController isKindOfClass:NSClassFromString(@"QXChirldViewController")]) {
|
||||||
self.interactivePopGestureRecognizer.enabled = NO;
|
self.interactivePopGestureRecognizer.enabled = NO;
|
||||||
}else{
|
}else{
|
||||||
self.interactivePopGestureRecognizer.enabled = YES;
|
self.interactivePopGestureRecognizer.enabled = YES;
|
||||||
|
|||||||
@@ -15,16 +15,6 @@
|
|||||||
|
|
||||||
typedef void (^closeBlock)(void);
|
typedef void (^closeBlock)(void);
|
||||||
typedef void (^showFinishBlock)(void);
|
typedef void (^showFinishBlock)(void);
|
||||||
typedef NS_ENUM(NSInteger) {
|
|
||||||
/// 房主
|
|
||||||
QXRoomRoleTypeOwner = 0,
|
|
||||||
/// 主持
|
|
||||||
QXRoomRoleTypeCompere,
|
|
||||||
/// 管理员
|
|
||||||
QXRoomRoleTypeManager,
|
|
||||||
/// 观众
|
|
||||||
QXRoomRoleTypeAudience,
|
|
||||||
}QXRoomRoleType;
|
|
||||||
|
|
||||||
|
|
||||||
@interface QXGlobal : NSObject
|
@interface QXGlobal : NSObject
|
||||||
@@ -57,6 +47,10 @@ typedef NS_ENUM(NSInteger) {
|
|||||||
|
|
||||||
@property (nonatomic,strong) QXRoomViewController *roomVC;
|
@property (nonatomic,strong) QXRoomViewController *roomVC;
|
||||||
|
|
||||||
|
@property (nonatomic,strong) NSMutableDictionary *offLineDict;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)NSString *superRoomId;
|
||||||
|
|
||||||
-(void)miniRoomWithRoomId:(NSString*)roomId roomCover:(NSString*)roomCover;
|
-(void)miniRoomWithRoomId:(NSString*)roomId roomCover:(NSString*)roomCover;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,11 +20,14 @@
|
|||||||
#import "QXTimer.h"
|
#import "QXTimer.h"
|
||||||
#import <TIMPush/TIMPushManager.h>
|
#import <TIMPush/TIMPushManager.h>
|
||||||
#import "QXManagerMqtt.h"
|
#import "QXManagerMqtt.h"
|
||||||
|
#import "QXRedPacketManager.h"
|
||||||
|
|
||||||
@interface QXGlobal()
|
@interface QXGlobal()
|
||||||
@property (nonatomic,assign)BOOL isLogin;
|
@property (nonatomic,assign)BOOL isLogin;
|
||||||
@property (nonatomic,strong)NSString *roomId;
|
@property (nonatomic,strong)NSString *roomId;
|
||||||
|
|
||||||
|
@property (nonatomic,assign)BOOL isClickJoinRoom;
|
||||||
|
|
||||||
@property (nonatomic,strong)QXTimer *timer;
|
@property (nonatomic,strong)QXTimer *timer;
|
||||||
@property (nonatomic,assign)NSInteger taskTime;
|
@property (nonatomic,assign)NSInteger taskTime;
|
||||||
@end
|
@end
|
||||||
@@ -193,6 +196,7 @@
|
|||||||
[[QXGlobal shareGlobal] logOut];
|
[[QXGlobal shareGlobal] logOut];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
||||||
// navagationController.interactivePopGestureRecognizer.enabled = NO;
|
// navagationController.interactivePopGestureRecognizer.enabled = NO;
|
||||||
if (_miniView) {
|
if (_miniView) {
|
||||||
@@ -203,7 +207,9 @@
|
|||||||
if ([navagationController.viewControllers containsObject:self.roomVC]) {
|
if ([navagationController.viewControllers containsObject:self.roomVC]) {
|
||||||
return;
|
return;
|
||||||
}else{
|
}else{
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
||||||
self.roomVC.hidesBottomBarWhenPushed = YES;
|
self.roomVC.hidesBottomBarWhenPushed = YES;
|
||||||
|
[self.roomVC playHWDMP4];
|
||||||
[navagationController pushViewController:self.roomVC animated:YES];
|
[navagationController pushViewController:self.roomVC animated:YES];
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -211,28 +217,68 @@
|
|||||||
if (self.roomId && ![self.roomId isEqualToString:roomId]) {
|
if (self.roomId && ![self.roomId isEqualToString:roomId]) {
|
||||||
[self quitRoomWithRoomId:self.roomId];
|
[self quitRoomWithRoomId:self.roomId];
|
||||||
}
|
}
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
||||||
|
MJWeakSelf
|
||||||
if (isRejoin) {
|
if (isRejoin) {
|
||||||
if (self.roomVC!=nil) {
|
if (self.roomVC!=nil) {
|
||||||
|
[self.roomVC playHWDMP4];
|
||||||
self.roomVC.hidesBottomBarWhenPushed = YES;
|
self.roomVC.hidesBottomBarWhenPushed = YES;
|
||||||
[navagationController pushViewController:self.roomVC animated:YES];
|
[navagationController pushViewController:self.roomVC animated:YES];
|
||||||
}else{
|
}else{
|
||||||
self.roomVC = [[QXRoomViewController alloc] init];
|
if (weakSelf.isClickJoinRoom) {
|
||||||
self.roomVC.roomId = roomId;
|
return;
|
||||||
self.roomVC.isReJoin = isRejoin;
|
}
|
||||||
self.roomId = roomId;
|
// showLoadingInView(KEYWINDOW)
|
||||||
self.roomVC.hidesBottomBarWhenPushed = YES;
|
weakSelf.isClickJoinRoom = YES;
|
||||||
[navagationController pushViewController:self.roomVC animated:YES];
|
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
|
||||||
|
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
||||||
|
// hideLoadingInView(KEYWINDOW)
|
||||||
|
// roomModel.room_info.pk_room_id = @"33";
|
||||||
|
weakSelf.isClickJoinRoom = NO;
|
||||||
|
weakSelf.roomVC = [[QXRoomViewController alloc] init];
|
||||||
|
weakSelf.roomVC.roomId = roomId;
|
||||||
|
weakSelf.roomVC.isReJoin = isRejoin;
|
||||||
|
weakSelf.roomId = roomId;
|
||||||
|
weakSelf.roomVC.roomModel = roomModel;
|
||||||
|
weakSelf.roomVC.hidesBottomBarWhenPushed = YES;
|
||||||
|
[navagationController pushViewController:weakSelf.roomVC animated:YES];
|
||||||
|
weakSelf.roomId = roomId;
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
showToast(msg);
|
||||||
|
// hideLoadingInView(KEYWINDOW)
|
||||||
|
weakSelf.isClickJoinRoom = NO;
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if ([roomId isEqualToString:self.roomVC.roomId]) {
|
if ([roomId isEqualToString:self.roomVC.roomId]) {
|
||||||
|
[self.roomVC playHWDMP4];
|
||||||
[navagationController pushViewController:self.roomVC animated:YES];
|
[navagationController pushViewController:self.roomVC animated:YES];
|
||||||
}else{
|
}else{
|
||||||
self.roomVC = [[QXRoomViewController alloc] init];
|
// showLoadingInView(KEYWINDOW)
|
||||||
self.roomVC.roomId = roomId;
|
if (weakSelf.isClickJoinRoom) {
|
||||||
self.roomVC.isReJoin = isRejoin;
|
return;
|
||||||
self.roomId = roomId;
|
}
|
||||||
self.roomVC.hidesBottomBarWhenPushed = YES;
|
weakSelf.isClickJoinRoom = YES;
|
||||||
[navagationController pushViewController:self.roomVC animated:YES];
|
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
|
||||||
|
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
|
||||||
|
// hideLoadingInView(KEYWINDOW)
|
||||||
|
// roomModel.room_info.pk_room_id = @"33";
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
||||||
|
weakSelf.isClickJoinRoom = NO;
|
||||||
|
weakSelf.roomVC = [[QXRoomViewController alloc] init];
|
||||||
|
weakSelf.roomVC.roomId = roomId;
|
||||||
|
weakSelf.roomVC.isReJoin = isRejoin;
|
||||||
|
weakSelf.roomId = roomId;
|
||||||
|
weakSelf.roomVC.roomModel = roomModel;
|
||||||
|
weakSelf.roomVC.hidesBottomBarWhenPushed = YES;
|
||||||
|
[navagationController pushViewController:weakSelf.roomVC animated:YES];
|
||||||
|
weakSelf.roomId = roomId;
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
weakSelf.isClickJoinRoom = NO;
|
||||||
|
showToast(msg);
|
||||||
|
// hideLoadingInView(KEYWINDOW)
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (QXGlobal.shareGlobal.taskModel != nil) {
|
if (QXGlobal.shareGlobal.taskModel != nil) {
|
||||||
@@ -253,16 +299,27 @@
|
|||||||
|
|
||||||
|
|
||||||
-(void)quitRoomWithRoomId:(NSString *)roomId{
|
-(void)quitRoomWithRoomId:(NSString *)roomId{
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = NO;
|
||||||
|
/// 移除所有红包
|
||||||
|
[[QXRedPacketManager sharedManager] destoryRedpacketInfo];
|
||||||
/// 移除特效
|
/// 移除特效
|
||||||
[[QXGiftPlayerManager shareManager] destroyEffectSvga];
|
[[QXGiftPlayerManager shareManager] destroyEffectSvga];
|
||||||
/// 退出声网
|
/// 退出声网
|
||||||
[[QXAgoraEngine sharedEngine] leaveChannel];
|
[[QXAgoraEngine sharedEngine] leaveChannel];
|
||||||
|
/// 销毁播放器
|
||||||
[[QXAgoraEngine sharedEngine] ktv_DestoryKtvPlayer];
|
[[QXAgoraEngine sharedEngine] ktv_DestoryKtvPlayer];
|
||||||
|
/// 销毁整个声网示例
|
||||||
[[QXAgoraEngine sharedEngine] destroyEngine];
|
[[QXAgoraEngine sharedEngine] destroyEngine];
|
||||||
/// 退出直播群
|
/// 退出直播群
|
||||||
[[QXRoomMessageManager shared] quitGroupWithRoomId:roomId];
|
[[QXRoomMessageManager shared] quitGroupWithRoomId:roomId];
|
||||||
|
[[QXGlobal shareGlobal].offLineDict removeAllObjects];
|
||||||
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||||
|
if (_roomVC) {
|
||||||
|
/// 回收麦位视图内存
|
||||||
|
[_roomVC.seatContentView destroyViews];
|
||||||
|
/// 回收控制器内存
|
||||||
|
[_roomVC destroyViews];
|
||||||
|
}
|
||||||
self.roomId = nil;
|
self.roomId = nil;
|
||||||
_roomVC = nil;
|
_roomVC = nil;
|
||||||
/// 业务http退出
|
/// 业务http退出
|
||||||
@@ -294,4 +351,10 @@
|
|||||||
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleHeavy];
|
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleHeavy];
|
||||||
[generator impactOccurred];
|
[generator impactOccurred];
|
||||||
}
|
}
|
||||||
|
-(NSMutableDictionary *)offLineDict{
|
||||||
|
if (!_offLineDict) {
|
||||||
|
_offLineDict = [NSMutableDictionary dictionary];
|
||||||
|
}
|
||||||
|
return _offLineDict;
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
+(UIColor*)themeColor;
|
+(UIColor*)themeColor;
|
||||||
/// 获取按钮字体色
|
/// 获取按钮字体色
|
||||||
+(UIColor*)btnTextColor;
|
+(UIColor*)btnTextColor;
|
||||||
/// 主题色
|
/// 背景图
|
||||||
+(NSString*)backgroundImage;
|
+(NSString*)backgroundImage;
|
||||||
/// tabbar
|
/// tabbar
|
||||||
+(NSArray*)tabbarArray;
|
+(NSArray*)tabbarArray;
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
config.backgroundImage = @"app_bg";
|
config.backgroundImage = @"app_bg";
|
||||||
config.placehoulderTextColor = RGB16(0x9b9b9b);
|
config.placehoulderTextColor = RGB16(0x9b9b9b);
|
||||||
/// appstore
|
/// appstore
|
||||||
config.themeColor = RGB16(0x0dffb9);
|
config.themeColor = RGB16(0x6C49E4);
|
||||||
config.btnTextColor = RGB16(0x333333);
|
config.btnTextColor = RGB16(0xffffff);
|
||||||
|
|
||||||
// config.themeColor = RGB16(0xFC7285);
|
// config.themeColor = RGB16(0xFC7285);
|
||||||
// config.btnTextColor = RGB16(0xFFFFFF);
|
// config.btnTextColor = RGB16(0xFFFFFF);
|
||||||
|
|||||||
@@ -154,9 +154,12 @@
|
|||||||
CGFloat height = [firsModel.content heightForFont:[UIFont systemFontOfSize:14] width:SCREEN_WIDTH-40-16*2-7];
|
CGFloat height = [firsModel.content heightForFont:[UIFont systemFontOfSize:14] width:SCREEN_WIDTH-40-16*2-7];
|
||||||
QXDynamicCommentHeaderView *header = [[QXDynamicCommentHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, height+12+40+7+3+9)];
|
QXDynamicCommentHeaderView *header = [[QXDynamicCommentHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, height+12+40+7+3+9)];
|
||||||
[header addTapBlock:^(id _Nonnull obj) {
|
[header addTapBlock:^(id _Nonnull obj) {
|
||||||
weakSelf.commentView.model = firsModel;
|
// weakSelf.commentView.model = firsModel;
|
||||||
weakSelf.commentView.textField.placeholder = [NSString stringWithFormat:@"回复:%@",firsModel.nickname];
|
// weakSelf.commentView.textField.placeholder = [NSString stringWithFormat:@"回复:%@",firsModel.nickname];
|
||||||
[weakSelf.commentView.textField becomeFirstResponder];
|
// [weakSelf.commentView.textField becomeFirstResponder];
|
||||||
|
UIPasteboard *p = [UIPasteboard generalPasteboard];
|
||||||
|
p.string = [NSString stringWithFormat:@"%@", firsModel.content];
|
||||||
|
showToast(@"已复制");
|
||||||
}];
|
}];
|
||||||
header.delegate = self;
|
header.delegate = self;
|
||||||
header.model = firsModel;
|
header.model = firsModel;
|
||||||
@@ -204,11 +207,11 @@
|
|||||||
if (indexPath.section == 0) {
|
if (indexPath.section == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QXDynamicCommentListModel *firsModel = self.dataArray[indexPath.section-1];
|
// QXDynamicCommentListModel *firsModel = self.dataArray[indexPath.section-1];
|
||||||
QXDynamicCommentListModel *model = firsModel.replies[indexPath.row];
|
// QXDynamicCommentListModel *model = firsModel.replies[indexPath.row];
|
||||||
self.commentView.model = model;
|
// self.commentView.model = model;
|
||||||
self.commentView.textField.placeholder = [NSString stringWithFormat:@"回复:%@",model.nickname];
|
// self.commentView.textField.placeholder = [NSString stringWithFormat:@"回复:%@",model.nickname];
|
||||||
[self.commentView.textField becomeFirstResponder];
|
// [self.commentView.textField becomeFirstResponder];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)didClickDeleteComment:(QXDynamicCommentListModel*)model{
|
-(void)didClickDeleteComment:(QXDynamicCommentListModel*)model{
|
||||||
@@ -234,7 +237,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
-(void)didClickReplyComment:(QXDynamicCommentListModel*)model{
|
-(void)didClickReplyComment:(QXDynamicCommentListModel*)model{
|
||||||
|
self.commentView.model = model;
|
||||||
|
self.commentView.textField.placeholder = [NSString stringWithFormat:@"回复:%@",model.nickname];
|
||||||
|
[self.commentView.textField becomeFirstResponder];
|
||||||
}
|
}
|
||||||
#pragma mark - 评论
|
#pragma mark - 评论
|
||||||
-(void)didClickSendWithText:(NSString*)text model:(nonnull QXDynamicCommentListModel *)model{
|
-(void)didClickSendWithText:(NSString*)text model:(nonnull QXDynamicCommentListModel *)model{
|
||||||
|
|||||||
@@ -381,6 +381,7 @@
|
|||||||
[weakSelf.sendView hide];
|
[weakSelf.sendView hide];
|
||||||
self->_sendView = nil;
|
self->_sendView = nil;
|
||||||
};
|
};
|
||||||
|
self.sendView.vc = weakSelf.viewController;
|
||||||
[self.sendView showInView:KEYWINDOW];
|
[self.sendView showInView:KEYWINDOW];
|
||||||
|
|
||||||
// al.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
// al.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
@implementation QXDynamicTopicCell
|
@implementation QXDynamicTopicCell
|
||||||
-(void)setModel:(QXTopicModel *)model{
|
-(void)setModel:(QXTopicModel *)model{
|
||||||
|
_model = model;
|
||||||
[self.topicImageView sd_setImageWithURL:[NSURL URLWithString:model.pic] placeholderImage:nil];
|
[self.topicImageView sd_setImageWithURL:[NSURL URLWithString:model.pic] placeholderImage:nil];
|
||||||
self.titleLabel.text = model.title;
|
self.titleLabel.text = model.title;
|
||||||
self.countLabel.text = [NSString localizedStringWithFormat:QXText(@"%@条动态"),[NSString qx_showHotCountNum:model.count.longLongValue]];
|
self.countLabel.text = [NSString localizedStringWithFormat:QXText(@"%@条动态"),[NSString qx_showHotCountNum:model.count.longLongValue]];
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ typedef NS_ENUM(NSInteger) {
|
|||||||
QXSendGiftViewTypeRoom ,
|
QXSendGiftViewTypeRoom ,
|
||||||
/// 拍卖
|
/// 拍卖
|
||||||
QXSendGiftViewTypeAuction ,
|
QXSendGiftViewTypeAuction ,
|
||||||
|
/// 交友房
|
||||||
|
QXSendGiftViewTypeFriend ,
|
||||||
}QXSendGiftViewType;
|
}QXSendGiftViewType;
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@@ -41,10 +43,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@property (nonatomic,strong)NSString* dynamicId;
|
@property (nonatomic,strong)NSString* dynamicId;
|
||||||
/// 拍卖id
|
/// 拍卖id
|
||||||
@property (nonatomic,strong)NSString* auctionId;
|
@property (nonatomic,strong)NSString* auctionId;
|
||||||
|
/// 交友房助力id
|
||||||
|
@property (nonatomic,strong)NSString* heartId;
|
||||||
|
/// 跳转活动
|
||||||
|
@property (nonatomic,copy)void(^jumpActivityGiftBlock)(QXGiftModel *gift,NSString*userIds);
|
||||||
|
|
||||||
@property (nonatomic,copy)void(^sendSuccessBlock)(NSString*dynamicId);
|
@property (nonatomic,copy)void(^sendSuccessBlock)(NSString*dynamicId);
|
||||||
|
|
||||||
@property (nonatomic,copy)void(^roomSendSuccessBlock)(BOOL isAuction, QXGiftModel*giftModel,NSString*userId, NSString*auctionId);
|
@property (nonatomic,copy)void(^roomSendSuccessBlock)(QXSendGiftViewType sendType, QXGiftModel*giftModel,NSString*giftCount,NSString*userId, NSString*optionId);
|
||||||
-(void)reloadData;
|
-(void)reloadData;
|
||||||
|
|
||||||
-(void)showInView:(UIView *)view;
|
-(void)showInView:(UIView *)view;
|
||||||
@@ -56,8 +62,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@property (nonatomic,strong)UICollectionView *collectionView;
|
@property (nonatomic,strong)UICollectionView *collectionView;
|
||||||
@property (nonatomic,strong)NSMutableArray *dataArray;
|
@property (nonatomic,strong)NSMutableArray *dataArray;
|
||||||
@property (nonatomic,strong)NSString *giftLabelId;
|
@property (nonatomic,strong)NSString *giftLabelId;
|
||||||
|
@property (nonatomic,strong)NSString *roomId;
|
||||||
@property (nonatomic,assign)NSInteger selectedIndex;
|
@property (nonatomic,assign)NSInteger selectedIndex;
|
||||||
|
@property (nonatomic,strong)QXGiftModel *model;
|
||||||
@property (nonatomic,copy)void(^selectetGiftBlock)(QXGiftModel *gift);
|
@property (nonatomic,copy)void(^selectetGiftBlock)(QXGiftModel *gift);
|
||||||
|
@property (nonatomic,assign)QXSendGiftViewType type;
|
||||||
|
|
||||||
|
-(void)reloadData;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface QXSendGiftUserView : UIView<UICollectionViewDelegate,UICollectionViewDataSource>
|
@interface QXSendGiftUserView : UIView<UICollectionViewDelegate,UICollectionViewDataSource>
|
||||||
@@ -107,10 +118,12 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@property (nonatomic,strong)UIButton *sendBtn;
|
@property (nonatomic,strong)UIButton *sendBtn;
|
||||||
|
|
||||||
@property (nonatomic,strong)QXGiftModel *giftModel;
|
@property (nonatomic,strong)QXGiftModel *giftModel;
|
||||||
@property (nonatomic,assign)BOOL isAuction;
|
@property (nonatomic,assign)QXSendGiftViewType sendType;
|
||||||
@property (nonatomic,strong)NSString *userId;
|
@property (nonatomic,strong)NSString *userId;
|
||||||
@property (nonatomic,strong)NSString *auctionId;
|
@property (nonatomic,strong)NSString *auctionId;
|
||||||
|
@property (nonatomic,strong)NSString *heartId;
|
||||||
@property (nonatomic,strong)NSString *roomId;
|
@property (nonatomic,strong)NSString *roomId;
|
||||||
|
@property (nonatomic,strong)NSString *giftCount;
|
||||||
|
|
||||||
@property (nonatomic,strong)CABasicAnimation *animation;
|
@property (nonatomic,strong)CABasicAnimation *animation;
|
||||||
@property (nonatomic,copy)void(^dissMissBlock)(QXGiftModel *gift);
|
@property (nonatomic,copy)void(^dissMissBlock)(QXGiftModel *gift);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#import "QXPayTypeModel.h"
|
#import "QXPayTypeModel.h"
|
||||||
#import "QXMineNetwork.h"
|
#import "QXMineNetwork.h"
|
||||||
#import "QXDynamicNetwork.h"
|
#import "QXDynamicNetwork.h"
|
||||||
|
#import "QXCustomAlertView.h"
|
||||||
|
|
||||||
|
|
||||||
@interface QXSendGiftView()<JXCategoryViewDelegate,JXCategoryListContainerViewDelegate,QXMenuPopViewDelegate,UIGestureRecognizerDelegate>
|
@interface QXSendGiftView()<JXCategoryViewDelegate,JXCategoryListContainerViewDelegate,QXMenuPopViewDelegate,UIGestureRecognizerDelegate>
|
||||||
@@ -44,16 +45,23 @@
|
|||||||
@property (nonatomic,strong)UIView *sendBgView;
|
@property (nonatomic,strong)UIView *sendBgView;
|
||||||
@property (nonatomic,strong)UIButton *countBtn;
|
@property (nonatomic,strong)UIButton *countBtn;
|
||||||
@property (nonatomic,strong)UIButton *sendBtn;
|
@property (nonatomic,strong)UIButton *sendBtn;
|
||||||
|
@property (nonatomic,strong)UIButton *sendAllBtn;
|
||||||
|
|
||||||
/// 被选中的礼物
|
/// 被选中的礼物
|
||||||
@property (nonatomic,strong)QXGiftModel *giftModel;
|
@property (nonatomic,strong)QXGiftModel *giftModel;
|
||||||
@property (nonatomic,strong)NSString *giftCount;
|
@property (nonatomic,strong)NSString *giftCount;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)QXSendGiftCollectionView *bagGiftView;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)NSString *giftBagPrice;
|
||||||
|
@property (nonatomic,strong)NSString *coin;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation QXSendGiftView
|
@implementation QXSendGiftView
|
||||||
|
|
||||||
-(void)showInView:(UIView *)view{
|
-(void)showInView:(UIView *)view{
|
||||||
|
self.giftCount = @"1";
|
||||||
|
[self.countBtn setTitle:@"X1" forState:(UIControlStateNormal)];
|
||||||
self.bgView.y = SCREEN_HEIGHT;
|
self.bgView.y = SCREEN_HEIGHT;
|
||||||
[view addSubview:self];
|
[view addSubview:self];
|
||||||
[UIView animateWithDuration:0.3 animations:^{
|
[UIView animateWithDuration:0.3 animations:^{
|
||||||
@@ -86,10 +94,13 @@
|
|||||||
_type = type;
|
_type = type;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case QXSendGiftViewTypeFind:{
|
case QXSendGiftViewTypeFind:{
|
||||||
|
self.heartId = @"";
|
||||||
if (_pitUserListView) {
|
if (_pitUserListView) {
|
||||||
[_pitUserListView removeFromSuperview];
|
[_pitUserListView removeFromSuperview];
|
||||||
_pitUserListView = nil;
|
_pitUserListView = nil;
|
||||||
}
|
}
|
||||||
|
self.cornLabel.textColor = RGB16(0x333333);
|
||||||
|
[self.countBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
||||||
self.bgView.frame = CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(429)+kSafeAreaBottom);
|
self.bgView.frame = CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(429)+kSafeAreaBottom);
|
||||||
self.bgView.backgroundColor = [UIColor whiteColor];
|
self.bgView.backgroundColor = [UIColor whiteColor];
|
||||||
self.bgImageView.hidden = YES;
|
self.bgImageView.hidden = YES;
|
||||||
@@ -99,8 +110,43 @@
|
|||||||
self.containerView.frame = CGRectMake(0, self.categoryView.bottom, SCREEN_WIDTH, self.bgView.height-self.categoryView.bottom-ScaleWidth(63)-kSafeAreaBottom);
|
self.containerView.frame = CGRectMake(0, self.categoryView.bottom, SCREEN_WIDTH, self.bgView.height-self.categoryView.bottom-ScaleWidth(63)-kSafeAreaBottom);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case QXSendGiftViewTypeRoom:
|
case QXSendGiftViewTypeRoom:{
|
||||||
|
self.heartId = @"";
|
||||||
|
if (_userListView) {
|
||||||
|
[_userListView removeFromSuperview];
|
||||||
|
_userListView = nil;
|
||||||
|
}
|
||||||
|
self.bgView.frame = CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(429)+kSafeAreaBottom);
|
||||||
|
self.bgView.backgroundColor = [UIColor clearColor];
|
||||||
|
self.bgImageView.frame = self.bounds;
|
||||||
|
self.bgImageView.hidden = NO;
|
||||||
|
self.categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#FFFFFF"];
|
||||||
|
self.categoryView.titleColor = [UIColor colorWithHexString:@"#E9E9E9"];
|
||||||
|
[self.bgView addRoundedCornersWithRadius:16 byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)];
|
||||||
|
[self initPitUserListView];
|
||||||
|
self.categoryView.frame = CGRectMake(16, ScaleWidth(44)+ScaleWidth(8), SCREEN_WIDTH-32, ScaleWidth(44));
|
||||||
|
self.containerView.frame = CGRectMake(0, self.categoryView.bottom, SCREEN_WIDTH, self.bgView.height-self.categoryView.bottom-ScaleWidth(63)-kSafeAreaBottom);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case QXSendGiftViewTypeAuction:{
|
case QXSendGiftViewTypeAuction:{
|
||||||
|
self.heartId = @"";
|
||||||
|
if (_userListView) {
|
||||||
|
[_userListView removeFromSuperview];
|
||||||
|
_userListView = nil;
|
||||||
|
}
|
||||||
|
self.bgView.frame = CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(429)+kSafeAreaBottom);
|
||||||
|
self.bgView.backgroundColor = [UIColor clearColor];
|
||||||
|
self.bgImageView.frame = self.bounds;
|
||||||
|
self.bgImageView.hidden = NO;
|
||||||
|
self.categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#FFFFFF"];
|
||||||
|
self.categoryView.titleColor = [UIColor colorWithHexString:@"#E9E9E9"];
|
||||||
|
[self.bgView addRoundedCornersWithRadius:16 byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)];
|
||||||
|
[self initPitUserListView];
|
||||||
|
self.categoryView.frame = CGRectMake(16, ScaleWidth(44)+ScaleWidth(8), SCREEN_WIDTH-32, ScaleWidth(44));
|
||||||
|
self.containerView.frame = CGRectMake(0, self.categoryView.bottom, SCREEN_WIDTH, self.bgView.height-self.categoryView.bottom-ScaleWidth(63)-kSafeAreaBottom);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case QXSendGiftViewTypeFriend:{
|
||||||
if (_userListView) {
|
if (_userListView) {
|
||||||
[_userListView removeFromSuperview];
|
[_userListView removeFromSuperview];
|
||||||
_userListView = nil;
|
_userListView = nil;
|
||||||
@@ -199,7 +245,7 @@
|
|||||||
|
|
||||||
self.cornLabel = [[UILabel alloc] init];
|
self.cornLabel = [[UILabel alloc] init];
|
||||||
self.cornLabel.font = [UIFont systemFontOfSize:14];
|
self.cornLabel.font = [UIFont systemFontOfSize:14];
|
||||||
self.cornLabel.textColor = QXConfig.textColor;
|
self.cornLabel.textColor = RGB16(0xffffff);
|
||||||
self.cornLabel.text = @"0";
|
self.cornLabel.text = @"0";
|
||||||
[self.bgView addSubview:self.cornLabel];
|
[self.bgView addSubview:self.cornLabel];
|
||||||
[self.cornLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.cornLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
@@ -237,7 +283,7 @@
|
|||||||
|
|
||||||
self.countBtn = [[UIButton alloc] init];
|
self.countBtn = [[UIButton alloc] init];
|
||||||
[self.countBtn setTitle:@"X1" forState:(UIControlStateNormal)];
|
[self.countBtn setTitle:@"X1" forState:(UIControlStateNormal)];
|
||||||
[self.countBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
[self.countBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
|
||||||
self.countBtn.titleLabel.font = [UIFont systemFontOfSize:12];
|
self.countBtn.titleLabel.font = [UIFont systemFontOfSize:12];
|
||||||
[self.countBtn addTarget:self action:@selector(selectedCount:) forControlEvents:(UIControlEventTouchUpInside)];
|
[self.countBtn addTarget:self action:@selector(selectedCount:) forControlEvents:(UIControlEventTouchUpInside)];
|
||||||
[self.sendBgView addSubview:self.countBtn];
|
[self.sendBgView addSubview:self.countBtn];
|
||||||
@@ -257,6 +303,22 @@
|
|||||||
make.right.top.bottom.equalTo(self.sendBgView);
|
make.right.top.bottom.equalTo(self.sendBgView);
|
||||||
make.width.equalTo(self.sendBgView.mas_width).multipliedBy(0.5);
|
make.width.equalTo(self.sendBgView.mas_width).multipliedBy(0.5);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
self.sendAllBtn = [[UIButton alloc] init];
|
||||||
|
[self.sendAllBtn setTitle:QXText(@"一键全送") forState:(UIControlStateNormal)];
|
||||||
|
[self.sendAllBtn setTitleColor:QXConfig.btnTextColor forState:(UIControlStateNormal)];
|
||||||
|
self.sendAllBtn.backgroundColor = QXConfig.themeColor;
|
||||||
|
[self.sendAllBtn addRoundedCornersWithRadius:17.5];
|
||||||
|
self.sendAllBtn.titleLabel.font = [UIFont systemFontOfSize:12];
|
||||||
|
[self.sendAllBtn addTarget:self action:@selector(sendAllAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||||
|
self.sendAllBtn.hidden = YES;
|
||||||
|
[self.bgView addSubview:self.sendAllBtn];
|
||||||
|
[self.sendAllBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.width.mas_equalTo(80);
|
||||||
|
make.height.mas_equalTo(35);
|
||||||
|
make.centerY.equalTo(self.sendBgView);
|
||||||
|
make.right.equalTo(self.sendBgView.mas_left).offset(-5);
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
-(void)introduceAction{
|
-(void)introduceAction{
|
||||||
QXBaseWebViewController *vc = [[QXBaseWebViewController alloc] init];
|
QXBaseWebViewController *vc = [[QXBaseWebViewController alloc] init];
|
||||||
@@ -266,7 +328,7 @@
|
|||||||
-(void)selectedCount:(UIButton*)sender{
|
-(void)selectedCount:(UIButton*)sender{
|
||||||
QXMenuPopView *popView = [[QXMenuPopView alloc] initWithPoint:CGPointMake(SCREEN_WIDTH-16-60-30, SCREEN_HEIGHT-kSafeAreaBottom-50-225) width:88 height:225];
|
QXMenuPopView *popView = [[QXMenuPopView alloc] initWithPoint:CGPointMake(SCREEN_WIDTH-16-60-30, SCREEN_HEIGHT-kSafeAreaBottom-50-225) width:88 height:225];
|
||||||
popView.type = QXMenuPopViewTypeArrowBottom;
|
popView.type = QXMenuPopViewTypeArrowBottom;
|
||||||
popView.dataArray = @[@"X99",@"X66",@"X30",@"10",@"5",@"3",@"1"];
|
popView.dataArray = @[@"X20",@"X15",@"X10",@"X5",@"X1"];
|
||||||
popView.delegate = self;
|
popView.delegate = self;
|
||||||
[popView showInView:KEYWINDOW];
|
[popView showInView:KEYWINDOW];
|
||||||
}
|
}
|
||||||
@@ -282,10 +344,42 @@
|
|||||||
_dynamicId = dynamicId;
|
_dynamicId = dynamicId;
|
||||||
self.userListView.dynamicId = dynamicId;
|
self.userListView.dynamicId = dynamicId;
|
||||||
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
||||||
|
[self getMyWallet];
|
||||||
|
}
|
||||||
|
-(void)sendAllAction{
|
||||||
|
if (self.pitUserListView.selectedArray.count == 0) {
|
||||||
|
showToast(@"请选择送礼对象");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (self.pitUserListView.selectedArray.count > 1) {
|
||||||
|
showToast(@"一键全送仅能选择一个用户");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MJWeakSelf
|
||||||
|
QXCustomAlertView *alertView = [[QXCustomAlertView alloc] init];
|
||||||
|
alertView.cancelBlock = ^{
|
||||||
|
|
||||||
|
};
|
||||||
|
alertView.commitBlock = ^{
|
||||||
|
[weakSelf sendAllNetWork];
|
||||||
|
};
|
||||||
|
[alertView showInView:self.vc.view title:@"温馨提示" message:@"是否确认将背包礼物全部送出" cancleTitle:nil commitTitle:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
// 一键清空网络请求
|
||||||
|
-(void)sendAllNetWork{
|
||||||
|
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
|
||||||
|
MJWeakSelf
|
||||||
|
[QXMineNetwork roomBagGiftClearWithRoomId:self.roomId userId:userId heartId:self.heartId auction_id:self.auctionId successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
|
[weakSelf hide];
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
showToast(msg);
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
/// 发送礼物
|
/// 发送礼物
|
||||||
-(void)sendAction{
|
-(void)sendAction{
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
|
__block NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
|
||||||
if (self.type == QXSendGiftViewTypeRoom) {
|
if (self.type == QXSendGiftViewTypeRoom) {
|
||||||
if (self.giftModel==nil) {
|
if (self.giftModel==nil) {
|
||||||
showToast(@"请选择礼物");
|
showToast(@"请选择礼物");
|
||||||
@@ -295,31 +389,77 @@
|
|||||||
showToast(@"请选择送礼对象");
|
showToast(@"请选择送礼对象");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
self.heartId = @"";
|
||||||
|
self.auctionId = @"";
|
||||||
/// 2为背包
|
/// 2为背包
|
||||||
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
|
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
|
||||||
NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
|
@weakify(self)
|
||||||
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
|
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
[weakSelf hide];
|
@strongify(self)
|
||||||
if (weakSelf.roomSendSuccessBlock) {
|
if (type.intValue == 1) {
|
||||||
weakSelf.roomSendSuccessBlock(NO,weakSelf.giftModel,userId,@"");
|
if (self.roomSendSuccessBlock) {
|
||||||
|
self.roomSendSuccessBlock(self.type,self.giftModel,self.giftCount,userId,@"");
|
||||||
|
}
|
||||||
|
[self hide];
|
||||||
|
}else{
|
||||||
|
[self.bagGiftView reloadData];
|
||||||
}
|
}
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
showToast(msg)
|
showToast(msg)
|
||||||
}];
|
}];
|
||||||
}else if (self.type == QXSendGiftViewTypeAuction) {
|
}else if (self.type == QXSendGiftViewTypeAuction) {
|
||||||
|
if (self.giftModel==nil) {
|
||||||
|
showToast(@"请选择礼物");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.heartId = @"";
|
||||||
|
@weakify(self)
|
||||||
/// 2为背包
|
/// 2为背包
|
||||||
NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
|
|
||||||
[QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:[QXGlobal shareGlobal].loginModel.user_id gift_id:self.giftModel.gift_id num:self.giftCount type:type successBlock:^(NSDictionary * _Nonnull dict) {
|
[QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:[QXGlobal shareGlobal].loginModel.user_id gift_id:self.giftModel.gift_id num:self.giftCount type:type successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
[weakSelf hide];
|
@strongify(self)
|
||||||
if (weakSelf.roomSendSuccessBlock) {
|
if (type.intValue == 1) {
|
||||||
weakSelf.roomSendSuccessBlock(YES,weakSelf.giftModel,[QXGlobal shareGlobal].loginModel.user_id,weakSelf.auctionId);
|
if (self.roomSendSuccessBlock) {
|
||||||
|
self.roomSendSuccessBlock(self.type,self.giftModel,self.giftCount,[QXGlobal shareGlobal].loginModel.user_id,self.auctionId);
|
||||||
|
}
|
||||||
|
[self hide];
|
||||||
|
}else{
|
||||||
|
[self.bagGiftView reloadData];
|
||||||
}
|
}
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
showToast(msg);
|
showToast(msg);
|
||||||
}];
|
}];
|
||||||
}else{
|
}else if (self.type == QXSendGiftViewTypeFriend) {
|
||||||
|
if (self.giftModel==nil) {
|
||||||
|
showToast(@"请选择礼物");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.auctionId = @"";
|
||||||
/// 2为背包
|
/// 2为背包
|
||||||
NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
|
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
|
||||||
|
// NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
|
||||||
|
@weakify(self)
|
||||||
|
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
|
@strongify(self)
|
||||||
|
if (type.intValue == 1) {
|
||||||
|
|
||||||
|
if (self.roomSendSuccessBlock) {
|
||||||
|
self.roomSendSuccessBlock(self.type,self.giftModel,self.giftCount,userId,self.heartId);
|
||||||
|
}
|
||||||
|
[self hide];
|
||||||
|
}else{
|
||||||
|
[self.bagGiftView reloadData];
|
||||||
|
}
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
showToast(msg)
|
||||||
|
}];
|
||||||
|
}else{
|
||||||
|
if (self.giftModel==nil) {
|
||||||
|
showToast(@"请选择礼物");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/// 2为背包
|
||||||
|
// NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
|
||||||
|
NSString *type = @"1";
|
||||||
[QXDynamicNetwork dynamicGiveGiftWithId:self.dynamicId
|
[QXDynamicNetwork dynamicGiveGiftWithId:self.dynamicId
|
||||||
gift_id:self.giftModel.gift_id
|
gift_id:self.giftModel.gift_id
|
||||||
num:self.giftCount
|
num:self.giftCount
|
||||||
@@ -341,10 +481,12 @@
|
|||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
switch (self.type) {
|
switch (self.type) {
|
||||||
case QXSendGiftViewTypeFind:{
|
case QXSendGiftViewTypeFind:{
|
||||||
[self.viewController dismissViewControllerAnimated:YES completion:^{
|
// [self.viewController dismissViewControllerAnimated:YES completion:^{
|
||||||
QXRechargeViewcController *vc = [[QXRechargeViewcController alloc] init];
|
[self hide];
|
||||||
[weakSelf.vc.navigationController pushViewController:vc animated:YES];
|
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
||||||
}];
|
recharge.isPop = YES;
|
||||||
|
[recharge showInView:KEYWINDOW];
|
||||||
|
// }];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case QXSendGiftViewTypeRoom:{
|
case QXSendGiftViewTypeRoom:{
|
||||||
@@ -366,6 +508,7 @@
|
|||||||
}
|
}
|
||||||
-(void)setPitUsers:(NSArray *)pitUsers{
|
-(void)setPitUsers:(NSArray *)pitUsers{
|
||||||
_pitUsers = pitUsers;
|
_pitUsers = pitUsers;
|
||||||
|
self.giftModel = nil;
|
||||||
self.pitUserListView.isSingle = NO;
|
self.pitUserListView.isSingle = NO;
|
||||||
[self.pitUserListView.selectedArray removeAllObjects];
|
[self.pitUserListView.selectedArray removeAllObjects];
|
||||||
self.pitUserListView.users = pitUsers;
|
self.pitUserListView.users = pitUsers;
|
||||||
@@ -374,6 +517,7 @@
|
|||||||
-(void)setUserModel:(QXRoomPitModel *)userModel{
|
-(void)setUserModel:(QXRoomPitModel *)userModel{
|
||||||
_userModel = userModel;
|
_userModel = userModel;
|
||||||
userModel.isSelected = YES;
|
userModel.isSelected = YES;
|
||||||
|
self.giftModel = nil;
|
||||||
self.pitUserListView.isSingle = YES;
|
self.pitUserListView.isSingle = YES;
|
||||||
[self.pitUserListView.selectedArray removeAllObjects];
|
[self.pitUserListView.selectedArray removeAllObjects];
|
||||||
[self.pitUserListView.selectedArray addObject:userModel.user_id];
|
[self.pitUserListView.selectedArray addObject:userModel.user_id];
|
||||||
@@ -394,17 +538,29 @@
|
|||||||
[QXMineNetwork giftLabelSuccessBlock:^(NSArray<QXGiftLabelModel *> * _Nonnull list) {
|
[QXMineNetwork giftLabelSuccessBlock:^(NSArray<QXGiftLabelModel *> * _Nonnull list) {
|
||||||
[weakSelf.titles removeAllObjects];
|
[weakSelf.titles removeAllObjects];
|
||||||
[weakSelf.titles addObjectsFromArray:list];
|
[weakSelf.titles addObjectsFromArray:list];
|
||||||
QXGiftLabelModel *md = [[QXGiftLabelModel alloc] init];
|
|
||||||
md.name = @"背包";
|
|
||||||
md.id = @"-10";
|
|
||||||
[weakSelf.titles insertObject:md atIndex:0];
|
|
||||||
NSMutableArray *arr = [NSMutableArray array];
|
NSMutableArray *arr = [NSMutableArray array];
|
||||||
|
|
||||||
|
if (weakSelf.type != QXSendGiftViewTypeFind) {
|
||||||
|
QXGiftLabelModel *model = [[QXGiftLabelModel alloc] init];
|
||||||
|
model.name = @"背包";
|
||||||
|
model.id = @"-10";
|
||||||
|
[weakSelf.titles insertObject:model atIndex:0];
|
||||||
|
weakSelf.categoryView.titles = arr;
|
||||||
|
for (QXGiftLabelModel*md in weakSelf.titles) {
|
||||||
|
[arr addObject:md.name];
|
||||||
|
}
|
||||||
|
[weakSelf.categoryView setDefaultSelectedIndex:1];
|
||||||
|
[weakSelf.categoryView reloadData];
|
||||||
|
}else{
|
||||||
for (QXGiftLabelModel*md in weakSelf.titles) {
|
for (QXGiftLabelModel*md in weakSelf.titles) {
|
||||||
[arr addObject:md.name];
|
[arr addObject:md.name];
|
||||||
}
|
}
|
||||||
weakSelf.categoryView.titles = arr;
|
weakSelf.categoryView.titles = arr;
|
||||||
[weakSelf.categoryView setDefaultSelectedIndex:1];
|
[weakSelf.categoryView setDefaultSelectedIndex:0];
|
||||||
[weakSelf.categoryView reloadData];
|
[weakSelf.categoryView reloadData];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
}];
|
}];
|
||||||
@@ -417,10 +573,17 @@
|
|||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
[QXMineNetwork getWalletInfoSuccessBlock:^(NSString * _Nonnull coin, NSString * _Nonnull earnings, NSString * _Nonnull title, NSString * _Nonnull url) {
|
[QXMineNetwork getWalletInfoSuccessBlock:^(NSString * _Nonnull coin, NSString * _Nonnull earnings, NSString * _Nonnull title, NSString * _Nonnull url) {
|
||||||
weakSelf.cornLabel.text = coin;
|
weakSelf.cornLabel.text = coin;
|
||||||
|
weakSelf.coin = coin;
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
}];
|
}];
|
||||||
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
||||||
|
|
||||||
|
[QXMineNetwork roomGiftBagPricesuccessBlock:^(NSString * _Nonnull price) {
|
||||||
|
weakSelf.giftBagPrice = price;
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -431,6 +594,21 @@
|
|||||||
// }else{
|
// }else{
|
||||||
// self.funnyView.hidden = YES;
|
// self.funnyView.hidden = YES;
|
||||||
// }
|
// }
|
||||||
|
if (self.type == QXSendGiftViewTypeFind) {
|
||||||
|
self.cornLabel.text = self.coin;
|
||||||
|
self.sendAllBtn.hidden = YES;
|
||||||
|
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (index == 0) {
|
||||||
|
self.sendAllBtn.hidden = NO;
|
||||||
|
self.cornLabel.text = self.giftBagPrice;
|
||||||
|
self.rechargeBtn.hidden = YES;
|
||||||
|
}else{
|
||||||
|
self.cornLabel.text = self.coin;
|
||||||
|
self.sendAllBtn.hidden = YES;
|
||||||
|
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
|
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
|
||||||
return self.titles.count;
|
return self.titles.count;
|
||||||
@@ -438,11 +616,28 @@
|
|||||||
|
|
||||||
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
|
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
|
||||||
QXSendGiftCollectionView *subGiftView = [[QXSendGiftCollectionView alloc] initWithFrame:listContainerView.bounds];
|
QXSendGiftCollectionView *subGiftView = [[QXSendGiftCollectionView alloc] initWithFrame:listContainerView.bounds];
|
||||||
|
if (index == 0) {
|
||||||
|
self.bagGiftView = subGiftView;
|
||||||
|
}
|
||||||
QXGiftLabelModel *md = self.titles[index];
|
QXGiftLabelModel *md = self.titles[index];
|
||||||
|
subGiftView.roomId = self.roomId;
|
||||||
subGiftView.giftLabelId = md.id;
|
subGiftView.giftLabelId = md.id;
|
||||||
|
subGiftView.type = self.type;
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
subGiftView.selectetGiftBlock = ^(QXGiftModel * _Nonnull gift) {
|
subGiftView.selectetGiftBlock = ^(QXGiftModel * _Nonnull gift) {
|
||||||
weakSelf.giftModel = gift;
|
weakSelf.giftModel = gift;
|
||||||
|
if ([gift.activities_id isEqualToString:@"5"]) {
|
||||||
|
if (weakSelf.pitUserListView.selectedArray.count == 0) {
|
||||||
|
showToast(@"请选择送礼对象");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NSString *userIds = [weakSelf.pitUserListView.selectedArray componentsJoinedByString:@","];
|
||||||
|
if (weakSelf.jumpActivityGiftBlock) {
|
||||||
|
weakSelf.jumpActivityGiftBlock(gift,userIds);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (gift.gift_bag_name.length > 0) {
|
if (gift.gift_bag_name.length > 0) {
|
||||||
weakSelf.funnyView.hidden = NO;
|
weakSelf.funnyView.hidden = NO;
|
||||||
weakSelf.titleLabel.text = gift.gift_bag_name;
|
weakSelf.titleLabel.text = gift.gift_bag_name;
|
||||||
@@ -476,13 +671,17 @@
|
|||||||
if (weakSelf.userListView.dataArray.count == 0) {
|
if (weakSelf.userListView.dataArray.count == 0) {
|
||||||
return;
|
return;
|
||||||
}else{
|
}else{
|
||||||
QXAlertViewController *al = (QXAlertViewController *)weakSelf.viewController;
|
// QXAlertViewController *al = (QXAlertViewController *)weakSelf.viewController;
|
||||||
[al hideViewFinishBlock:^{
|
// [al hideViewFinishBlock:^{
|
||||||
|
[weakSelf hide];
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||||
QXGiveGiftListView *listView = [[QXGiveGiftListView alloc] init];
|
QXGiveGiftListView *listView = [[QXGiveGiftListView alloc] init];
|
||||||
listView.dynamicId = weakSelf.dynamicId;
|
listView.dynamicId = weakSelf.dynamicId;
|
||||||
listView.vc = weakSelf.vc;
|
listView.vc = weakSelf.vc;
|
||||||
[listView showInView:KEYWINDOW];
|
[listView showInView:KEYWINDOW];
|
||||||
}];
|
});
|
||||||
|
|
||||||
|
// }];
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
@@ -530,6 +729,33 @@
|
|||||||
[self addSubview:self.collectionView];
|
[self addSubview:self.collectionView];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
-(void)reloadData{
|
||||||
|
if ([self.giftLabelId isExist]) {
|
||||||
|
if ([self.giftLabelId isEqualToString:@"-10"]) {
|
||||||
|
MJWeakSelf
|
||||||
|
[QXMineNetwork getBagListSuccessBlock:^(NSArray * _Nonnull list) {
|
||||||
|
[weakSelf.dataArray removeAllObjects];
|
||||||
|
[weakSelf.dataArray addObjectsFromArray:list];
|
||||||
|
BOOL haveGift = NO;
|
||||||
|
for (QXGiftModel *model in list) {
|
||||||
|
if ([weakSelf.model.gift_id isEqualToString:model.gift_id]) {
|
||||||
|
haveGift = YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (haveGift == NO) {
|
||||||
|
weakSelf.selectedIndex = -1;
|
||||||
|
weakSelf.model = nil;
|
||||||
|
}
|
||||||
|
[weakSelf.collectionView reloadData];
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
|
}];
|
||||||
|
}else{
|
||||||
|
[self getGiftListWithLabel:self.giftLabelId];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
-(void)setGiftLabelId:(NSString *)giftLabelId{
|
-(void)setGiftLabelId:(NSString *)giftLabelId{
|
||||||
_giftLabelId = giftLabelId;
|
_giftLabelId = giftLabelId;
|
||||||
if ([giftLabelId isEqualToString:@"-10"]) {
|
if ([giftLabelId isEqualToString:@"-10"]) {
|
||||||
@@ -541,7 +767,8 @@
|
|||||||
-(void)getGiftListWithLabel:(NSString*)label{
|
-(void)getGiftListWithLabel:(NSString*)label{
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
self.selectedIndex = -1;
|
self.selectedIndex = -1;
|
||||||
[QXMineNetwork giftListWithLabel:label successBlock:^(NSArray<QXGiftModel *> * _Nonnull list) {
|
self.model = nil;
|
||||||
|
[QXMineNetwork giftListWithLabel:label roomId:self.roomId successBlock:^(NSArray<QXGiftModel *> * _Nonnull list) {
|
||||||
[weakSelf.dataArray removeAllObjects];
|
[weakSelf.dataArray removeAllObjects];
|
||||||
[weakSelf.dataArray addObjectsFromArray:list];
|
[weakSelf.dataArray addObjectsFromArray:list];
|
||||||
[weakSelf.collectionView reloadData];
|
[weakSelf.collectionView reloadData];
|
||||||
@@ -551,6 +778,7 @@
|
|||||||
}
|
}
|
||||||
-(void)getBagList{
|
-(void)getBagList{
|
||||||
self.selectedIndex = -1;
|
self.selectedIndex = -1;
|
||||||
|
self.model = nil;
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
[QXMineNetwork getBagListSuccessBlock:^(NSArray * _Nonnull list) {
|
[QXMineNetwork getBagListSuccessBlock:^(NSArray * _Nonnull list) {
|
||||||
[weakSelf.dataArray removeAllObjects];
|
[weakSelf.dataArray removeAllObjects];
|
||||||
@@ -569,19 +797,42 @@
|
|||||||
QXGiftCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXGiftCell" forIndexPath:indexPath];
|
QXGiftCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXGiftCell" forIndexPath:indexPath];
|
||||||
cell.cellType = QXGiftCellTypeLive;
|
cell.cellType = QXGiftCellTypeLive;
|
||||||
cell.roomGiftModel = self.dataArray[indexPath.row];
|
cell.roomGiftModel = self.dataArray[indexPath.row];
|
||||||
|
|
||||||
|
if (self.type == QXSendGiftViewTypeFind) {
|
||||||
|
cell.giftNameLabel.textColor = RGB16(0x333333);
|
||||||
|
[cell.cornBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
||||||
if (self.selectedIndex == indexPath.row) {
|
if (self.selectedIndex == indexPath.row) {
|
||||||
cell.selecteBtn.selected = YES;
|
cell.selecteBtn.selected = YES;
|
||||||
}else{
|
}else{
|
||||||
cell.selecteBtn.selected = NO;
|
cell.selecteBtn.selected = NO;
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
if (self.selectedIndex == indexPath.row) {
|
||||||
|
cell.selecteBtn.selected = YES;
|
||||||
|
cell.giftNameLabel.textColor = RGB16(0x333333);
|
||||||
|
[cell.cornBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
||||||
|
}else{
|
||||||
|
cell.selecteBtn.selected = NO;
|
||||||
|
cell.giftNameLabel.textColor = RGB16(0xffffff);
|
||||||
|
[cell.cornBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
|
||||||
|
}
|
||||||
|
}
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
QXGiftModel *model = self.dataArray[indexPath.row];
|
||||||
|
if ([model.activities_id isEqualToString:@"5"]) {
|
||||||
|
/// 要进入活动
|
||||||
|
if (self.selectetGiftBlock) {
|
||||||
|
self.selectetGiftBlock(model);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (indexPath.row == self.selectedIndex) {
|
if (indexPath.row == self.selectedIndex) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.selectedIndex = indexPath.row;
|
self.selectedIndex = indexPath.row;
|
||||||
QXGiftModel *model = self.dataArray[indexPath.row];
|
self.model = self.dataArray[indexPath.row];
|
||||||
if (self.selectetGiftBlock) {
|
if (self.selectetGiftBlock) {
|
||||||
self.selectetGiftBlock(model);
|
self.selectetGiftBlock(model);
|
||||||
}
|
}
|
||||||
@@ -817,6 +1068,7 @@
|
|||||||
-(void)setUsers:(NSArray *)users{
|
-(void)setUsers:(NSArray *)users{
|
||||||
_users = users;
|
_users = users;
|
||||||
// [self.selectedArray removeAllObjects];
|
// [self.selectedArray removeAllObjects];
|
||||||
|
self.allBtn.selected = NO;
|
||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
}
|
}
|
||||||
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
||||||
@@ -900,10 +1152,13 @@
|
|||||||
}
|
}
|
||||||
-(void)setPitModel:(QXRoomPitModel *)pitModel{
|
-(void)setPitModel:(QXRoomPitModel *)pitModel{
|
||||||
_pitModel = pitModel;
|
_pitModel = pitModel;
|
||||||
|
[self.selectedBtn setTitle:pitModel.nickname forState:(UIControlStateNormal)];
|
||||||
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:pitModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:pitModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
||||||
if (pitModel.pit_number.intValue == 9) {
|
if (pitModel.pit_number.intValue == 9) {
|
||||||
|
self.selectedBtn.hidden = NO;
|
||||||
[self.selectedBtn setTitle:QXText(@"主持人") forState:(UIControlStateNormal)];
|
[self.selectedBtn setTitle:QXText(@"主持人") forState:(UIControlStateNormal)];
|
||||||
}else if (pitModel.pit_number.intValue == 10) {
|
}else if (pitModel.pit_number.intValue == 10) {
|
||||||
|
self.selectedBtn.hidden = NO;
|
||||||
[self.selectedBtn setTitle:QXText(@"嘉宾") forState:(UIControlStateNormal)];
|
[self.selectedBtn setTitle:QXText(@"嘉宾") forState:(UIControlStateNormal)];
|
||||||
}else{
|
}else{
|
||||||
if (pitModel.pit_number.intValue > 0) {
|
if (pitModel.pit_number.intValue > 0) {
|
||||||
@@ -915,9 +1170,9 @@
|
|||||||
[self.selectedBtn setTitle:[NSString localizedStringWithFormat:QXText(@"%@号麦"),pitModel.pit_number] forState:(UIControlStateNormal)];
|
[self.selectedBtn setTitle:[NSString localizedStringWithFormat:QXText(@"%@号麦"),pitModel.pit_number] forState:(UIControlStateNormal)];
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
self.selectedBtn.hidden = YES;
|
self.selectedBtn.hidden = NO;
|
||||||
|
[self.selectedBtn setTitle:pitModel.nickname forState:(UIControlStateNormal)];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pitModel.isSelected) {
|
if (pitModel.isSelected) {
|
||||||
@@ -996,20 +1251,31 @@
|
|||||||
_animation = nil;
|
_animation = nil;
|
||||||
[self.circleLayer addAnimation:self.animation forKey:@"circleAnimation"];
|
[self.circleLayer addAnimation:self.animation forKey:@"circleAnimation"];
|
||||||
[[QXGlobal shareGlobal] vibrationFeedback];
|
[[QXGlobal shareGlobal] vibrationFeedback];
|
||||||
if (self.isAuction) {
|
switch (self.sendType) {
|
||||||
[QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:self.userId gift_id:self.giftModel.gift_id num:@"1" type:@"1" successBlock:^(NSDictionary * _Nonnull dict) {
|
case QXSendGiftViewTypeRoom:
|
||||||
|
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
|
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
showToast(msg)
|
showToast(msg)
|
||||||
}];
|
}];
|
||||||
}else{
|
break;
|
||||||
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:@"1" to_uid:self.userId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
|
case QXSendGiftViewTypeAuction:
|
||||||
|
[QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:self.userId gift_id:self.giftModel.gift_id num:self.giftCount type:@"1" successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
|
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
showToast(msg)
|
showToast(msg)
|
||||||
}];
|
}];
|
||||||
|
break;
|
||||||
|
case QXSendGiftViewTypeFriend:
|
||||||
|
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
|
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
showToast(msg)
|
||||||
|
}];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
-(CABasicAnimation *)animation{
|
-(CABasicAnimation *)animation{
|
||||||
if (!_animation) {
|
if (!_animation) {
|
||||||
|
|||||||
@@ -179,6 +179,7 @@
|
|||||||
self.rightBtn = [[UIButton alloc] init];
|
self.rightBtn = [[UIButton alloc] init];
|
||||||
[self.rightBtn setImage:[UIImage imageNamed:@"login_agreement_sel"] forState:(UIControlStateSelected)];
|
[self.rightBtn setImage:[UIImage imageNamed:@"login_agreement_sel"] forState:(UIControlStateSelected)];
|
||||||
[self.rightBtn setImage:[UIImage imageNamed:@"login_agreement_nor"] forState:(UIControlStateNormal)];
|
[self.rightBtn setImage:[UIImage imageNamed:@"login_agreement_nor"] forState:(UIControlStateNormal)];
|
||||||
|
self.rightBtn.userInteractionEnabled = NO;
|
||||||
[self.contentView addSubview:self.rightBtn];
|
[self.contentView addSubview:self.rightBtn];
|
||||||
[self.rightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.rightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.right.mas_equalTo(-16);
|
make.right.mas_equalTo(-16);
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
|
|
||||||
-(void)didClickSendWithText:(NSString*)text model:(QXDynamicCommentListModel*)model;
|
-(void)didClickSendWithText:(NSString*)text model:(QXDynamicCommentListModel*)model;
|
||||||
|
|
||||||
|
-(void)didResignFirstResponder;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface QXDynamicCommentInputView : UIView
|
@interface QXDynamicCommentInputView : UIView
|
||||||
|
|||||||
@@ -98,6 +98,11 @@
|
|||||||
[textField resignFirstResponder];
|
[textField resignFirstResponder];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
-(void)textFieldDidEndEditing:(UITextField *)textField{
|
||||||
|
if (self.delegate && [self.delegate respondsToSelector:@selector(didResignFirstResponder)]) {
|
||||||
|
[self.delegate didResignFirstResponder];
|
||||||
|
}
|
||||||
|
}
|
||||||
-(void)setModel:(QXDynamicCommentListModel *)model{
|
-(void)setModel:(QXDynamicCommentListModel *)model{
|
||||||
_model = model;
|
_model = model;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,12 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "QXBaseViewController.h"
|
#import "QXBaseViewController.h"
|
||||||
|
#import "QXSearchModel.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface QXHomeSearchResultVC : QXBaseViewController
|
@interface QXHomeSearchResultVC : QXBaseViewController
|
||||||
@property (nonatomic,strong)NSArray *resultArray;
|
@property (nonatomic,strong)QXSearchListModel *model;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -7,8 +7,11 @@
|
|||||||
|
|
||||||
#import "QXHomeSearchResultVC.h"
|
#import "QXHomeSearchResultVC.h"
|
||||||
#import "QXHomeRoomCell.h"
|
#import "QXHomeRoomCell.h"
|
||||||
|
#import "QXSearchHeaderReusableView.h"
|
||||||
|
#import "QXSearchUserCell.h"
|
||||||
|
#import "QXUserHomePageViewController.h"
|
||||||
|
|
||||||
@interface QXHomeSearchResultVC ()<UICollectionViewDelegate,UICollectionViewDataSource>
|
@interface QXHomeSearchResultVC ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
|
||||||
@property (nonatomic,strong)UICollectionView *collectionView;
|
@property (nonatomic,strong)UICollectionView *collectionView;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -30,33 +33,75 @@
|
|||||||
[self.view addSubview:self.collectionView];
|
[self.view addSubview:self.collectionView];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setResultArray:(NSArray *)resultArray{
|
|
||||||
_resultArray = resultArray;
|
-(void)setModel:(QXSearchListModel *)model{
|
||||||
|
_model = model;
|
||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout
|
#pragma mark - UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout
|
||||||
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
|
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
|
||||||
return 1;
|
return 2;
|
||||||
}
|
}
|
||||||
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
||||||
return self.resultArray.count;
|
if (section == 0) {
|
||||||
|
return self.model.rooms.count;
|
||||||
|
}else{
|
||||||
|
return self.model.users.count;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
|
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
if (indexPath.section == 0) {
|
||||||
QXHomeRoomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXHomeRoomCell" forIndexPath:indexPath];
|
QXHomeRoomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXHomeRoomCell" forIndexPath:indexPath];
|
||||||
cell.searchModel = self.resultArray[indexPath.row];
|
cell.model = self.model.rooms[indexPath.row];
|
||||||
return cell;
|
return cell;
|
||||||
|
|
||||||
|
}else{
|
||||||
|
QXSearchUserCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXSearchUserCell" forIndexPath:indexPath];
|
||||||
|
cell.model = self.model.users[indexPath.row];
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
|
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
if (indexPath.section == 0) {
|
||||||
return CGSizeMake((SCREEN_WIDTH-15*3-1)/2.0, (SCREEN_WIDTH-15*3-1)/2.0);
|
return CGSizeMake((SCREEN_WIDTH-15*3-1)/2.0, (SCREEN_WIDTH-15*3-1)/2.0);
|
||||||
|
}else{
|
||||||
|
return CGSizeMake(SCREEN_WIDTH, 92);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
|
||||||
|
QXSearchHeaderReusableView *reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"QXSearchHeaderReusableView" forIndexPath:indexPath];
|
||||||
|
if (indexPath.section == 0) {
|
||||||
|
reusableView.title = @"相关房间";
|
||||||
|
}else{
|
||||||
|
reusableView.title = @"相关用户";
|
||||||
|
}
|
||||||
|
return reusableView;
|
||||||
|
}else{
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
|
||||||
|
return CGSizeMake(SCREEN_WIDTH, 48);
|
||||||
|
}
|
||||||
|
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{
|
||||||
|
return CGSizeZero;
|
||||||
|
}
|
||||||
|
|
||||||
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
QXSearchModel *model = self.resultArray[indexPath.row];
|
if (indexPath.section == 0) {
|
||||||
[[QXGlobal shareGlobal] joinRoomWithRoomId:model.id isRejoin:NO navagationController:self.navigationController];
|
QXRoomListModel *model = self.model.rooms[indexPath.row];
|
||||||
|
[[QXGlobal shareGlobal] joinRoomWithRoomId:model.room_id isRejoin:NO navagationController:self.navigationController];
|
||||||
|
}else{
|
||||||
|
QXUserHomeModel *model = self.model.users[indexPath.row];
|
||||||
|
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
|
||||||
|
vc.user_id = model.user_id;
|
||||||
|
[self.navigationController pushViewController:vc animated:YES];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -66,11 +111,14 @@
|
|||||||
layout.minimumLineSpacing = 15;
|
layout.minimumLineSpacing = 15;
|
||||||
layout.minimumInteritemSpacing = 15;
|
layout.minimumInteritemSpacing = 15;
|
||||||
layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15);
|
layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15);
|
||||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 16, SCREEN_WIDTH, SCREEN_HEIGHT-(NavContentHeight+TabbarContentHeight)) collectionViewLayout:layout];
|
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 16, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight) collectionViewLayout:layout];
|
||||||
_collectionView.delegate = self;
|
_collectionView.delegate = self;
|
||||||
_collectionView.dataSource = self;
|
_collectionView.dataSource = self;
|
||||||
|
_collectionView.bounces = YES;
|
||||||
_collectionView.backgroundColor = [UIColor clearColor];
|
_collectionView.backgroundColor = [UIColor clearColor];
|
||||||
[_collectionView registerNib:[UINib nibWithNibName:@"QXHomeRoomCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXHomeRoomCell"];
|
[_collectionView registerNib:[UINib nibWithNibName:@"QXHomeRoomCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXHomeRoomCell"];
|
||||||
|
[_collectionView registerNib:[UINib nibWithNibName:@"QXSearchUserCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXSearchUserCell"];
|
||||||
|
[_collectionView registerClass:[QXSearchHeaderReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"QXSearchHeaderReusableView"];
|
||||||
}
|
}
|
||||||
return _collectionView;
|
return _collectionView;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
return self.view;
|
return self.view;
|
||||||
}
|
}
|
||||||
-(void)listWillAppear{
|
-(void)listWillAppear{
|
||||||
|
self.page = 1;
|
||||||
[self getRoomList];
|
[self getRoomList];
|
||||||
}
|
}
|
||||||
-(UIScrollView *)listScrollView{
|
-(UIScrollView *)listScrollView{
|
||||||
@@ -37,6 +38,10 @@
|
|||||||
// Do any additional setup after loading the view.
|
// Do any additional setup after loading the view.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
-(void)viewWillAppear:(BOOL)animated{
|
||||||
|
[super viewWillAppear:animated];
|
||||||
|
QXLOG(@"========首页子控制器即将展示========");
|
||||||
|
}
|
||||||
-(void)initSubViews{
|
-(void)initSubViews{
|
||||||
self.page = 1;
|
self.page = 1;
|
||||||
[self.view addSubview:self.collectionView];
|
[self.view addSubview:self.collectionView];
|
||||||
@@ -47,17 +52,20 @@
|
|||||||
[super viewDidAppear:animated];
|
[super viewDidAppear:animated];
|
||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setRoomType:(QXMyRoomType *)roomType{
|
-(void)setRoomType:(QXMyRoomType *)roomType{
|
||||||
_roomType = roomType;
|
_roomType = roomType;
|
||||||
[self getRoomList];
|
[self getRoomList];
|
||||||
}
|
}
|
||||||
- (void)getRoomList {
|
- (void)getRoomList {
|
||||||
__weak typeof(self)weakSelf = self;
|
// __weak typeof(self)weakSelf = self;
|
||||||
|
@weakify(self)
|
||||||
[QXHomePageNetwork homeRoomListWithPage:self.page is_top:NO label_id:self.roomType.id successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
|
[QXHomePageNetwork homeRoomListWithPage:self.page is_top:NO label_id:self.roomType.id successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
|
||||||
|
@strongify(self)
|
||||||
if (self.page == 1) {
|
if (self.page == 1) {
|
||||||
[weakSelf.dataArray removeAllObjects];
|
[self.dataArray removeAllObjects];
|
||||||
}
|
}
|
||||||
[weakSelf.dataArray addObjectsFromArray:list];
|
[self.dataArray addObjectsFromArray:list];
|
||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
if (list.count == 0) {
|
if (list.count == 0) {
|
||||||
self.collectionView.mj_footer.state = MJRefreshStateNoMoreData;
|
self.collectionView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||||
@@ -65,6 +73,7 @@
|
|||||||
[self.collectionView.mj_footer endRefreshing];
|
[self.collectionView.mj_footer endRefreshing];
|
||||||
}
|
}
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
@strongify(self)
|
||||||
[self.collectionView.mj_footer endRefreshing];
|
[self.collectionView.mj_footer endRefreshing];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
@@ -81,6 +90,14 @@
|
|||||||
cell.model = self.dataArray[indexPath.row];
|
cell.model = self.dataArray[indexPath.row];
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
-(void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
QXHomeRoomCell *rCell = (QXHomeRoomCell *)cell;
|
||||||
|
[rCell startAnimating];
|
||||||
|
}
|
||||||
|
-(void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
QXHomeRoomCell *rCell = (QXHomeRoomCell *)cell;
|
||||||
|
[rCell endAnimating];
|
||||||
|
}
|
||||||
|
|
||||||
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
|
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
return CGSizeMake((SCREEN_WIDTH-15*3-1)/2.0, (SCREEN_WIDTH-15*3-1)/2.0);
|
return CGSizeMake((SCREEN_WIDTH-15*3-1)/2.0, (SCREEN_WIDTH-15*3-1)/2.0);
|
||||||
@@ -104,10 +121,12 @@
|
|||||||
_collectionView.dataSource = self;
|
_collectionView.dataSource = self;
|
||||||
_collectionView.backgroundColor = [UIColor clearColor];
|
_collectionView.backgroundColor = [UIColor clearColor];
|
||||||
[_collectionView registerNib:[UINib nibWithNibName:@"QXHomeRoomCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXHomeRoomCell"];
|
[_collectionView registerNib:[UINib nibWithNibName:@"QXHomeRoomCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXHomeRoomCell"];
|
||||||
MJWeakSelf
|
// MJWeakSelf
|
||||||
|
@weakify(self)
|
||||||
_collectionView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{
|
_collectionView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{
|
||||||
weakSelf.page++;
|
@strongify(self)
|
||||||
[weakSelf getRoomList];
|
self.page++;
|
||||||
|
[self getRoomList];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
return _collectionView;
|
return _collectionView;
|
||||||
|
|||||||
@@ -10,7 +10,9 @@
|
|||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface QXHomeViewController : QXBaseViewController
|
@interface QXHomeViewController : QXBaseViewController
|
||||||
|
-(void)popFirstRechargeView;
|
||||||
-(void)giftScrollViewShowWithModel:(QXGiftScrollModel*)model;
|
-(void)giftScrollViewShowWithModel:(QXGiftScrollModel*)model;
|
||||||
|
-(void)giftScrollViewShowWithModelList:(NSArray<QXGiftScrollModel*>*)list;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -17,9 +17,14 @@
|
|||||||
#import "QXHomePageNetwork.h"
|
#import "QXHomePageNetwork.h"
|
||||||
#import "QXMyRoomViewController.h"
|
#import "QXMyRoomViewController.h"
|
||||||
#import "QXUserHomePageViewController.h"
|
#import "QXUserHomePageViewController.h"
|
||||||
#import "QXFirstRechargePopView.h"
|
#import "QXNewPeoplePopView.h"
|
||||||
#import "QXRechargeView.h"
|
#import "QXRechargeView.h"
|
||||||
#import "QXAppstoreHomeView.h"
|
#import "QXAppstoreHomeView.h"
|
||||||
|
#import "QXConfig.h"
|
||||||
|
#import "QXSkyPraizeView.h"
|
||||||
|
#import "QXRechargePermissionModel.h"
|
||||||
|
#import "QXNiceGiftPopView.h" // 天降好礼
|
||||||
|
#import "QXFirstRechargeView.h" // 首充好礼
|
||||||
|
|
||||||
@interface QXHomeViewController ()<JXPagerViewDelegate,JXCategoryViewDelegate,GKCycleScrollViewDataSource,GKCycleScrollViewDelegate,QXGiftScrollViewDelegate,SDCycleScrollViewDelegate>
|
@interface QXHomeViewController ()<JXPagerViewDelegate,JXCategoryViewDelegate,GKCycleScrollViewDataSource,GKCycleScrollViewDelegate,QXGiftScrollViewDelegate,SDCycleScrollViewDelegate>
|
||||||
@property (nonatomic, strong) JXPagerView *pagingView;
|
@property (nonatomic, strong) JXPagerView *pagingView;
|
||||||
@@ -40,11 +45,15 @@
|
|||||||
@property (nonatomic,strong)UIView *headerView;
|
@property (nonatomic,strong)UIView *headerView;
|
||||||
@property (nonatomic,strong)UIView *sectionView;
|
@property (nonatomic,strong)UIView *sectionView;
|
||||||
|
|
||||||
@property (nonatomic,strong)UIButton *firstRechargeBtn;
|
//@property (nonatomic,strong)UIButton *firstRechargeBtn;
|
||||||
@property (nonatomic,strong)UIButton *skyDownBtn;
|
@property (nonatomic,strong)UIButton *skyDownBtn;
|
||||||
@property (nonatomic,strong)QXFirstRechargePopView *firstRechargeView;
|
@property (nonatomic,strong)QXNewPeoplePopView *nPeopleRechargeView;
|
||||||
|
|
||||||
@property (nonatomic,strong)QXAppstoreHomeView *appStoreView;
|
@property (nonatomic,strong)QXAppstoreHomeView *appStoreView;
|
||||||
|
@property (nonatomic,strong)SDCycleScrollView *rechargePermissionView;
|
||||||
|
@property (nonatomic,strong)NSMutableArray *rechargePermissionArray;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)QXRechargePermissionModel *permissionModel;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation QXHomeViewController
|
@implementation QXHomeViewController
|
||||||
@@ -53,6 +62,7 @@
|
|||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
// Do any additional setup after loading the view.
|
// Do any additional setup after loading the view.
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil];
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil];
|
||||||
|
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(rechargeSuccess) name:noticeAlipayResult object:nil];
|
||||||
}
|
}
|
||||||
-(void)viewWillAppear:(BOOL)animated{
|
-(void)viewWillAppear:(BOOL)animated{
|
||||||
[super viewWillAppear:animated];
|
[super viewWillAppear:animated];
|
||||||
@@ -60,33 +70,44 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)initSubViews{
|
- (void)initSubViews{
|
||||||
UILabel *tLabel = [[UILabel alloc] init];
|
if ([QXConfig.backgroundImage hasPrefix:@"http"] || [QXConfig.backgroundImage hasPrefix:@"https"]) {
|
||||||
tLabel.text = QXText(@"羽声");
|
[self updateBgImage:QXConfig.backgroundImage];
|
||||||
tLabel.font = [UIFont boldSystemFontOfSize:20];
|
}else{
|
||||||
[self.view addSubview:tLabel];
|
[self updateBgImage:@"app_home_bg"];
|
||||||
[tLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
}
|
||||||
|
UIImageView *logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mi_di"]];
|
||||||
|
[self.view addSubview:logoImageView];
|
||||||
|
[logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.left.mas_equalTo(16);
|
make.left.mas_equalTo(16);
|
||||||
make.top.mas_equalTo(kSafeAreaTop +10);
|
make.top.mas_equalTo(kSafeAreaTop +8);
|
||||||
|
make.width.mas_equalTo(66);
|
||||||
|
make.height.mas_equalTo(32);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[self.view addSubview:self.rankRightBtn];
|
[self.view addSubview:self.rankRightBtn];
|
||||||
[self.view addSubview:self.searchRightBtn];
|
[self.view addSubview:self.searchRightBtn];
|
||||||
[self.view addSubview:self.roomBtn];
|
[self.view addSubview:self.roomBtn];
|
||||||
|
|
||||||
[self.roomBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.roomBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.width.height.mas_equalTo(30);
|
make.width.mas_equalTo(54);
|
||||||
make.centerY.equalTo(tLabel);
|
make.height.mas_equalTo(26);
|
||||||
|
make.centerY.equalTo(logoImageView);
|
||||||
make.right.equalTo(self.view).offset(-10);
|
make.right.equalTo(self.view).offset(-10);
|
||||||
}];
|
}];
|
||||||
[self.searchRightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
||||||
make.right.equalTo(self.roomBtn.mas_left).offset(-10);
|
|
||||||
make.centerY.width.height.equalTo(self.roomBtn);
|
|
||||||
}];
|
|
||||||
[self.rankRightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.rankRightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.right.equalTo(self.searchRightBtn.mas_left).offset(-10);
|
make.right.equalTo(self.roomBtn.mas_left).offset(-10);
|
||||||
|
make.centerY.equalTo(self.roomBtn);
|
||||||
|
make.width.height.mas_equalTo(32);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.searchRightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.right.equalTo(self.rankRightBtn.mas_left).offset(-10);
|
||||||
make.centerY.equalTo(self.roomBtn);
|
make.centerY.equalTo(self.roomBtn);
|
||||||
make.width.height.mas_equalTo(30);
|
make.width.height.mas_equalTo(30);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
|
||||||
self.listVCArray = [NSMutableArray array];
|
self.listVCArray = [NSMutableArray array];
|
||||||
[self requestSlideToolData];
|
[self requestSlideToolData];
|
||||||
[self getTopRoomList];
|
[self getTopRoomList];
|
||||||
@@ -98,24 +119,32 @@
|
|||||||
self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
|
self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
|
||||||
self.pagingView.listContainerView.listCellBackgroundColor = [UIColor clearColor];
|
self.pagingView.listContainerView.listCellBackgroundColor = [UIColor clearColor];
|
||||||
// [self performSelector:@selector(giftScrollViewShow) afterDelay:5];
|
// [self performSelector:@selector(giftScrollViewShow) afterDelay:5];
|
||||||
MJWeakSelf
|
// MJWeakSelf
|
||||||
|
@weakify(self)
|
||||||
self.pagingView.mainTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
|
self.pagingView.mainTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
|
||||||
[weakSelf requestSlideToolData];
|
@strongify(self)
|
||||||
[weakSelf getTopRoomList];
|
[self requestSlideToolData];
|
||||||
[weakSelf getBanner];
|
[self getTopRoomList];
|
||||||
|
[self getBanner];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
self.firstRechargeBtn.hidden = YES;
|
// self.firstRechargeBtn.hidden = YES;
|
||||||
[self.view addSubview:self.firstRechargeBtn];
|
// [self.view addSubview:self.firstRechargeBtn];
|
||||||
[self.firstRechargeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
// [self.firstRechargeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.bottom.mas_equalTo(-(TabbarContentHeight+5));
|
// make.bottom.mas_equalTo(-(TabbarContentHeight+5));
|
||||||
make.right.equalTo(self.view).offset(-17);
|
// make.right.equalTo(self.view).offset(-17);
|
||||||
make.width.height.mas_equalTo(ScaleWidth(57));
|
// make.width.height.mas_equalTo(ScaleWidth(57));
|
||||||
}];
|
// }];
|
||||||
[self getBanner];
|
[self getBanner];
|
||||||
[self getFirstRechargePermission];
|
[self getRechargePermission];
|
||||||
self.appStoreView.hidden = YES;
|
self.appStoreView.hidden = YES;
|
||||||
[self.view addSubview:self.appStoreView];
|
[self.view addSubview:self.appStoreView];
|
||||||
|
|
||||||
|
self.rechargePermissionView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(SCREEN_WIDTH-80-17, SCREEN_HEIGHT-(TabbarContentHeight+90+80), 80, 80) delegate:self placeholderImage:nil];
|
||||||
|
self.rechargePermissionView.pageControlBottomOffset = -15;
|
||||||
|
self.rechargePermissionView.backgroundColor = [UIColor clearColor];
|
||||||
|
self.rechargePermissionView.hidden = YES;
|
||||||
|
[self.view addSubview:self.rechargePermissionView];
|
||||||
}
|
}
|
||||||
- (void)viewDidLayoutSubviews {
|
- (void)viewDidLayoutSubviews {
|
||||||
[super viewDidLayoutSubviews];
|
[super viewDidLayoutSubviews];
|
||||||
@@ -127,46 +156,91 @@
|
|||||||
[self getTopRoomList];
|
[self getTopRoomList];
|
||||||
[self getBanner];
|
[self getBanner];
|
||||||
}
|
}
|
||||||
|
-(void)rechargeSuccess{
|
||||||
|
[self getRechargePermission];
|
||||||
|
}
|
||||||
- (void)requestSlideToolData {
|
- (void)requestSlideToolData {
|
||||||
__weak typeof(self) weakSelf = self;
|
@weakify(self)
|
||||||
[QXHomePageNetwork homeRoomLabelListsuccessBlock:^(NSArray<QXMyRoomType *> * _Nonnull list) {
|
[QXHomePageNetwork homeRoomLabelListsuccessBlock:^(NSArray<QXMyRoomType *> * _Nonnull list) {
|
||||||
[weakSelf.titles removeAllObjects];
|
@strongify(self)
|
||||||
|
[self.titles removeAllObjects];
|
||||||
NSMutableArray *arr = [NSMutableArray array];
|
NSMutableArray *arr = [NSMutableArray array];
|
||||||
[weakSelf.titles addObjectsFromArray:list];
|
[self.titles addObjectsFromArray:list];
|
||||||
for (QXMyRoomType *md in list) {
|
for (QXMyRoomType *md in list) {
|
||||||
[arr addObject:md.label_name];
|
[arr addObject:md.label_name];
|
||||||
}
|
}
|
||||||
weakSelf.categoryView.titles = arr;
|
self.categoryView.titles = arr;
|
||||||
[weakSelf.categoryView reloadData];
|
[self.categoryView reloadData];
|
||||||
[weakSelf.pagingView.mainTableView.mj_header endRefreshing];
|
[self.pagingView.mainTableView.mj_header endRefreshing];
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
[weakSelf.pagingView.mainTableView.mj_header endRefreshing];
|
[self.pagingView.mainTableView.mj_header endRefreshing];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)getFirstRechargePermission{
|
//-(void)getFirstRechargePermission{
|
||||||
MJWeakSelf
|
// @weakify(self)
|
||||||
[QXHomePageNetwork getFirstRechargePermissionSuccessBlock:^(BOOL isShow) {
|
// [QXHomePageNetwork getFirstRechargePermissionSuccessBlock:^(BOOL isShow) {
|
||||||
weakSelf.firstRechargeBtn.hidden = !isShow;
|
// @strongify(self)
|
||||||
|
// self.firstRechargeBtn.hidden = !isShow;
|
||||||
|
// } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
//
|
||||||
|
// }];
|
||||||
|
//}
|
||||||
|
-(void)getRechargePermission{
|
||||||
|
// sky_drop_gift_icon ,new_people_recharge_icon ,first_recharge_icon
|
||||||
|
@weakify(self)
|
||||||
|
[QXHomePageNetwork getRechargePermissionSuccessBlock:^(QXRechargePermissionModel * _Nonnull model) {
|
||||||
|
@strongify(self)
|
||||||
|
self.permissionModel = model;
|
||||||
|
[self.rechargePermissionArray removeAllObjects];
|
||||||
|
NSMutableArray *imgs = [NSMutableArray array];
|
||||||
|
if (model.day_drop_permission.intValue == 1) {
|
||||||
|
[imgs addObject:@"sky_drop_gift_icon"];
|
||||||
|
QXRechargeTypeModel *md = [[QXRechargeTypeModel alloc] init];
|
||||||
|
md.icon = @"sky_drop_gift_icon";
|
||||||
|
md.type = 2;
|
||||||
|
[self.rechargePermissionArray addObject:md];
|
||||||
|
}
|
||||||
|
if (model.first_charge_permission.intValue == 1) {
|
||||||
|
[imgs addObject:@"first_recharge_icon"];
|
||||||
|
QXRechargeTypeModel *md = [[QXRechargeTypeModel alloc] init];
|
||||||
|
md.icon = @"first_recharge_icon";
|
||||||
|
md.type = 3;
|
||||||
|
[self.rechargePermissionArray addObject:md];
|
||||||
|
}
|
||||||
|
if (model.n_people_permission.intValue == 1) {
|
||||||
|
[imgs addObject:@"new_people_recharge_icon"];
|
||||||
|
QXRechargeTypeModel *md = [[QXRechargeTypeModel alloc] init];
|
||||||
|
md.icon = @"new_people_recharge_icon";
|
||||||
|
md.type = 1;
|
||||||
|
[self.rechargePermissionArray addObject:md];
|
||||||
|
}
|
||||||
|
if (imgs.count==0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.rechargePermissionView.hidden = NO;
|
||||||
|
self.rechargePermissionView.imageURLStringsGroup = imgs;
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
-(void)firstAction{
|
//-(void)firstAction{
|
||||||
[self popFirstRechargeView];
|
// [self popnPeopleRechargeView];
|
||||||
}
|
//// QXSkyPraizeView *v = [[QXSkyPraizeView alloc] init];
|
||||||
-(void)popFirstRechargeView{
|
//// [v showInView:self.view];
|
||||||
MJWeakSelf
|
//}
|
||||||
|
-(void)popnPeopleRechargeView{
|
||||||
|
// MJWeakSelf
|
||||||
// view.giftArray = @[@"",@"",@"",@"",@"",@""];
|
// view.giftArray = @[@"",@"",@"",@"",@"",@""];
|
||||||
self.firstRechargeView.closeActionBlock = ^{
|
self.nPeopleRechargeView.closeActionBlock = ^{
|
||||||
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
QXLOG(@"页面关闭");
|
QXLOG(@"页面关闭");
|
||||||
|
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
self.firstRechargeView.rechargeActionBlock = ^(NSString * _Nonnull money) {
|
self.nPeopleRechargeView.rechargeActionBlock = ^(NSString * _Nonnull money, NSString * _Nonnull gift_bag_id) {
|
||||||
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
QXLOG(@"页面关闭");
|
QXLOG(@"页面关闭");
|
||||||
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
||||||
@@ -174,15 +248,87 @@
|
|||||||
model.money = money;
|
model.money = money;
|
||||||
recharge.selectedModel = model;
|
recharge.selectedModel = model;
|
||||||
recharge.isPop = YES;
|
recharge.isPop = YES;
|
||||||
|
recharge.gift_bag_id = gift_bag_id;
|
||||||
recharge.isOnlyDisplayPayType = YES;
|
recharge.isOnlyDisplayPayType = YES;
|
||||||
[recharge showInView:KEYWINDOW];
|
[recharge showInView:KEYWINDOW];
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
[self.firstRechargeView reloadData];
|
[self.nPeopleRechargeView reloadData];
|
||||||
[[QXGlobal shareGlobal] showView:self.firstRechargeView popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
|
[[QXGlobal shareGlobal] showView:self.nPeopleRechargeView popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
|
||||||
|
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)popNiceGiftView{
|
||||||
|
MJWeakSelf
|
||||||
|
QXNiceGiftPopView *view = [[QXNiceGiftPopView alloc] init];
|
||||||
|
view.closeActionBlock = ^{
|
||||||
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
|
QXLOG(@"页面关闭");
|
||||||
|
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
view.rechargeActionBlock = ^(NSString * _Nonnull money, NSString * _Nonnull gift_bag_id) {
|
||||||
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
|
QXLOG(@"页面关闭");
|
||||||
|
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
||||||
|
QXRechargeListModel *model = [[QXRechargeListModel alloc] init];
|
||||||
|
model.money = money;
|
||||||
|
recharge.selectedModel = model;
|
||||||
|
recharge.isPop = YES;
|
||||||
|
recharge.gift_bag_id = gift_bag_id;
|
||||||
|
recharge.isOnlyDisplayPayType = YES;
|
||||||
|
[recharge showInView:KEYWINDOW];
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
view.refreshBlcock = ^{
|
||||||
|
[weakSelf getRechargePermission];
|
||||||
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
|
QXLOG(@"页面关闭");
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
[[QXGlobal shareGlobal] showView:view popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
|
||||||
|
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
-(void)popFirstRechargeView{
|
||||||
|
if (self.permissionModel.first_charge_permission.intValue != 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MJWeakSelf
|
||||||
|
QXFirstRechargeView *view = [[QXFirstRechargeView alloc] init];
|
||||||
|
view.closeActionBlock = ^{
|
||||||
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
|
QXLOG(@"页面关闭");
|
||||||
|
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
view.rechargeActionBlock = ^(NSString * _Nonnull money, NSString * _Nonnull gift_bag_id) {
|
||||||
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
|
QXLOG(@"页面关闭");
|
||||||
|
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
||||||
|
QXRechargeListModel *model = [[QXRechargeListModel alloc] init];
|
||||||
|
model.money = money;
|
||||||
|
recharge.selectedModel = model;
|
||||||
|
recharge.isPop = YES;
|
||||||
|
recharge.gift_bag_id = gift_bag_id;
|
||||||
|
recharge.isOnlyDisplayPayType = YES;
|
||||||
|
[recharge showInView:KEYWINDOW];
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
view.refreshBlcock = ^{
|
||||||
|
[weakSelf getRechargePermission];
|
||||||
|
[[QXGlobal shareGlobal].alertViewController hideViewFinishBlock:^{
|
||||||
|
QXLOG(@"页面关闭");
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
[[QXGlobal shareGlobal] showView:view popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
|
||||||
|
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - JXPagingViewDelegate
|
#pragma mark - JXPagingViewDelegate
|
||||||
|
|
||||||
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
||||||
@@ -227,37 +373,50 @@
|
|||||||
self.giftScrollView.model = model;
|
self.giftScrollView.model = model;
|
||||||
self.isShowGiftScrollView = YES;
|
self.isShowGiftScrollView = YES;
|
||||||
}
|
}
|
||||||
|
-(void)giftScrollViewShowWithModelList:(NSArray<QXGiftScrollModel*>*)list{
|
||||||
|
if (self.isShowGiftScrollView == NO) {
|
||||||
|
self.bannerScrollView.top = self.giftScrollView.bottom+12;
|
||||||
|
self.headerView.height += 12+self.giftScrollView.height;
|
||||||
|
[self.headerView addSubview:self.giftScrollView];
|
||||||
|
[self.pagingView resizeTableHeaderViewHeightWithAnimatable:YES duration:0.1 curve:UIViewAnimationCurveLinear];
|
||||||
|
}
|
||||||
|
++self.page;
|
||||||
|
self.giftScrollView.list = list;
|
||||||
|
self.isShowGiftScrollView = YES;
|
||||||
|
}
|
||||||
-(void)didClickGiftScrollView:(QXGiftScrollView *)giftScrollView index:(NSInteger)index model:(QXGiftScrollModel *)model{
|
-(void)didClickGiftScrollView:(QXGiftScrollView *)giftScrollView index:(NSInteger)index model:(QXGiftScrollModel *)model{
|
||||||
[[QXGlobal shareGlobal] joinRoomWithRoomId:model.roomId isRejoin:NO navagationController:self.navigationController];
|
[[QXGlobal shareGlobal] joinRoomWithRoomId:model.roomId isRejoin:NO navagationController:self.navigationController];
|
||||||
}
|
}
|
||||||
- (void)getTopRoomList {
|
- (void)getTopRoomList {
|
||||||
__weak typeof(self)weakSelf = self;
|
@weakify(self)
|
||||||
[QXHomePageNetwork homeRoomListWithPage:0 is_top:YES label_id:@"" successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
|
[QXHomePageNetwork homeRoomListWithPage:0 is_top:YES label_id:@"" successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
|
||||||
[weakSelf.dataArray removeAllObjects];
|
@strongify(self)
|
||||||
[weakSelf.dataArray addObjectsFromArray:list];
|
[self.dataArray removeAllObjects];
|
||||||
|
[self.dataArray addObjectsFromArray:list];
|
||||||
if (isAppStore) {
|
if (isAppStore) {
|
||||||
self.appStoreView.hidden = NO;
|
self.appStoreView.hidden = NO;
|
||||||
}else{
|
}else{
|
||||||
self.appStoreView.hidden = YES;
|
self.appStoreView.hidden = YES;
|
||||||
}
|
}
|
||||||
// weakSelf.appStoreView.dataArray = list;
|
// weakSelf.appStoreView.dataArray = list;
|
||||||
[weakSelf.cycleScrollView reloadData];
|
[self.cycleScrollView reloadData];
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
}
|
}
|
||||||
-(void)getBanner{
|
-(void)getBanner{
|
||||||
MJWeakSelf
|
@weakify(self)
|
||||||
[QXHomePageNetwork homeBannerSuccessBlock:^(NSArray<QXBanner *> * _Nonnull list) {
|
[QXHomePageNetwork homeBannerSuccessBlock:^(NSArray<QXBanner *> * _Nonnull list) {
|
||||||
|
@strongify(self)
|
||||||
NSMutableArray *arr = [NSMutableArray array];
|
NSMutableArray *arr = [NSMutableArray array];
|
||||||
for (QXBanner *banner in list) {
|
for (QXBanner *banner in list) {
|
||||||
[arr addObject:banner.image];
|
[arr addObject:banner.image];
|
||||||
}
|
}
|
||||||
[weakSelf.bannerArry removeAllObjects];
|
[self.bannerArry removeAllObjects];
|
||||||
[weakSelf.bannerArry addObjectsFromArray:list];
|
[self.bannerArry addObjectsFromArray:list];
|
||||||
weakSelf.appStoreView.bannerArray = list;
|
self.appStoreView.bannerArray = list;
|
||||||
weakSelf.bannerScrollView.imageURLStringsGroup = arr;
|
self.bannerScrollView.imageURLStringsGroup = arr;
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
}];
|
}];
|
||||||
@@ -277,7 +436,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (CGSize)sizeForCellInCycleScrollView:(GKCycleScrollView *)cycleScrollView {
|
- (CGSize)sizeForCellInCycleScrollView:(GKCycleScrollView *)cycleScrollView {
|
||||||
return CGSizeMake((SCREEN_WIDTH)/3, 113);
|
return CGSizeMake(180, 155);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)cycleScrollView:(GKCycleScrollView *)cycleScrollView didSelectCellAtIndex:(NSInteger)index {
|
- (void)cycleScrollView:(GKCycleScrollView *)cycleScrollView didSelectCellAtIndex:(NSInteger)index {
|
||||||
@@ -292,6 +451,23 @@
|
|||||||
[[QXGlobal shareGlobal] logOut];
|
[[QXGlobal shareGlobal] logOut];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (cycleScrollView == self.rechargePermissionView) {
|
||||||
|
QXRechargeTypeModel *md = self.rechargePermissionArray[index];
|
||||||
|
if (md.type == 1) {
|
||||||
|
[self popnPeopleRechargeView];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (md.type == 2) {
|
||||||
|
[self popNiceGiftView];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (md.type == 3) {
|
||||||
|
[self popFirstRechargeView];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QXBanner *banner = self.bannerArry[index];
|
QXBanner *banner = self.bannerArry[index];
|
||||||
if ([banner.type isEqualToString:@"2"]) {
|
if ([banner.type isEqualToString:@"2"]) {
|
||||||
QXBaseWebViewController *webVc = [[QXBaseWebViewController alloc] init];
|
QXBaseWebViewController *webVc = [[QXBaseWebViewController alloc] init];
|
||||||
@@ -371,28 +547,28 @@
|
|||||||
_categoryView = [[JXCategoryTitleView alloc] init];
|
_categoryView = [[JXCategoryTitleView alloc] init];
|
||||||
_categoryView.frame = CGRectMake(15, 0, SCREEN_WIDTH-30, 44);
|
_categoryView.frame = CGRectMake(15, 0, SCREEN_WIDTH-30, 44);
|
||||||
_categoryView.delegate = self;
|
_categoryView.delegate = self;
|
||||||
_categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#333333"];
|
_categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#FFFFFF"];
|
||||||
_categoryView.titleColor = [UIColor colorWithHexString:@"#666666"];
|
_categoryView.titleColor = RGB16A(0xF1ECFF, 0.45);
|
||||||
_categoryView.cellWidth = JXCategoryViewAutomaticDimension;
|
_categoryView.cellWidth = JXCategoryViewAutomaticDimension;
|
||||||
_categoryView.contentEdgeInsetLeft = 3;
|
_categoryView.contentEdgeInsetLeft = 3;
|
||||||
_categoryView.cellSpacing = 16;
|
_categoryView.cellSpacing = 16;
|
||||||
_categoryView.titleLabelZoomEnabled = YES;
|
_categoryView.titleLabelZoomEnabled = YES;
|
||||||
_categoryView.titleFont = [UIFont boldSystemFontOfSize:13];
|
_categoryView.titleFont = [UIFont boldSystemFontOfSize:16];
|
||||||
_categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:18];
|
_categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:20];
|
||||||
_categoryView.averageCellSpacingEnabled = NO;
|
_categoryView.averageCellSpacingEnabled = NO;
|
||||||
JXCategoryIndicatorImageView *indicatorView = [[JXCategoryIndicatorImageView alloc] init];
|
JXCategoryIndicatorImageView *indicatorView = [[JXCategoryIndicatorImageView alloc] init];
|
||||||
indicatorView.indicatorWidth = JXCategoryViewAutomaticDimension;
|
indicatorView.indicatorWidth = JXCategoryViewAutomaticDimension;
|
||||||
indicatorView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
|
indicatorView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
|
||||||
indicatorView.indicatorImageViewSize = CGSizeMake(29, 8);
|
indicatorView.indicatorImageViewSize = CGSizeMake(50, 28);
|
||||||
self.indicatorView = indicatorView;
|
self.indicatorView = indicatorView;
|
||||||
indicatorView.verticalMargin = 11;
|
indicatorView.verticalMargin = 5;
|
||||||
_categoryView.indicators = @[indicatorView];
|
_categoryView.indicators = @[indicatorView];
|
||||||
}
|
}
|
||||||
return _categoryView;
|
return _categoryView;
|
||||||
}
|
}
|
||||||
-(UIView *)headerView{
|
-(UIView *)headerView{
|
||||||
if (!_headerView) {
|
if (!_headerView) {
|
||||||
_headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.cycleScrollView.height+self.bannerScrollView.height)];
|
_headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.cycleScrollView.height+self.bannerScrollView.height+10)];
|
||||||
[_headerView addSubview:self.cycleScrollView];
|
[_headerView addSubview:self.cycleScrollView];
|
||||||
[_headerView addSubview:self.bannerScrollView];
|
[_headerView addSubview:self.bannerScrollView];
|
||||||
}
|
}
|
||||||
@@ -400,7 +576,7 @@
|
|||||||
}
|
}
|
||||||
-(SDCycleScrollView *)bannerScrollView{
|
-(SDCycleScrollView *)bannerScrollView{
|
||||||
if (!_bannerScrollView) {
|
if (!_bannerScrollView) {
|
||||||
_bannerScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(16, self.cycleScrollView.bottom, SCREEN_WIDTH-32, ScaleWidth(95)) delegate:self placeholderImage:nil];
|
_bannerScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(16, self.cycleScrollView.bottom+10, SCREEN_WIDTH-32, ScaleWidth(95)) delegate:self placeholderImage:nil];
|
||||||
_bannerScrollView.backgroundColor = [UIColor clearColor];
|
_bannerScrollView.backgroundColor = [UIColor clearColor];
|
||||||
_bannerScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill;
|
_bannerScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill;
|
||||||
[_bannerScrollView addRoundedCornersWithRadius:8] ;
|
[_bannerScrollView addRoundedCornersWithRadius:8] ;
|
||||||
@@ -410,18 +586,20 @@
|
|||||||
}
|
}
|
||||||
-(GKCycleScrollView *)cycleScrollView{
|
-(GKCycleScrollView *)cycleScrollView{
|
||||||
if (!_cycleScrollView) {
|
if (!_cycleScrollView) {
|
||||||
_cycleScrollView = [[GKCycleScrollView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(113))];
|
_cycleScrollView = [[GKCycleScrollView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 155)];
|
||||||
_cycleScrollView.dataSource = self;
|
_cycleScrollView.dataSource = self;
|
||||||
_cycleScrollView.delegate = self;
|
_cycleScrollView.delegate = self;
|
||||||
_cycleScrollView.minimumCellAlpha = 0.0;
|
_cycleScrollView.minimumCellAlpha = 0.0;
|
||||||
_cycleScrollView.leftRightMargin = 16.0f;
|
_cycleScrollView.leftRightMargin = 16.0f;
|
||||||
_cycleScrollView.topBottomMargin = 10.0f;
|
_cycleScrollView.topBottomMargin = 15.0f;
|
||||||
|
_cycleScrollView.isInfiniteLoop = YES;
|
||||||
|
_cycleScrollView.isAutoScroll = YES;
|
||||||
}
|
}
|
||||||
return _cycleScrollView;
|
return _cycleScrollView;
|
||||||
}
|
}
|
||||||
-(QXGiftScrollView *)giftScrollView{
|
-(QXGiftScrollView *)giftScrollView{
|
||||||
if (!_giftScrollView) {
|
if (!_giftScrollView) {
|
||||||
_giftScrollView = [[QXGiftScrollView alloc] initWithFrame:CGRectMake(16, self.cycleScrollView.bottom, SCREEN_WIDTH-32, 31)];
|
_giftScrollView = [[QXGiftScrollView alloc] initWithFrame:CGRectMake(16, self.cycleScrollView.bottom, SCREEN_WIDTH-32, 36)];
|
||||||
_giftScrollView.delegate = self;
|
_giftScrollView.delegate = self;
|
||||||
}
|
}
|
||||||
return _giftScrollView;
|
return _giftScrollView;
|
||||||
@@ -438,28 +616,33 @@
|
|||||||
}
|
}
|
||||||
return _bannerArry;
|
return _bannerArry;
|
||||||
}
|
}
|
||||||
-(UIButton *)firstRechargeBtn{
|
//-(UIButton *)firstRechargeBtn{
|
||||||
if (!_firstRechargeBtn) {
|
// if (!_firstRechargeBtn) {
|
||||||
_firstRechargeBtn = [[UIButton alloc] init];
|
// _firstRechargeBtn = [[UIButton alloc] init];
|
||||||
[_firstRechargeBtn setBackgroundImage:[UIImage imageNamed:@"first_recharge_icon"] forState:(UIControlStateNormal)];
|
// [_firstRechargeBtn setBackgroundImage:[UIImage imageNamed:@"first_recharge_icon"] forState:(UIControlStateNormal)];
|
||||||
[_firstRechargeBtn addTarget:self action:@selector(firstAction) forControlEvents:(UIControlEventTouchUpInside)];
|
// [_firstRechargeBtn addTarget:self action:@selector(firstAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||||
|
// }
|
||||||
|
// return _firstRechargeBtn;
|
||||||
|
//}
|
||||||
|
//-(UIButton *)skyDownBtn{
|
||||||
|
// if (!_skyDownBtn) {
|
||||||
|
// _skyDownBtn = [[UIButton alloc] init];
|
||||||
|
// [_skyDownBtn setBackgroundImage:[UIImage imageNamed:@"sky_down_gift_icon"] forState:(UIControlStateNormal)];
|
||||||
|
// }
|
||||||
|
// return _skyDownBtn;
|
||||||
|
//}
|
||||||
|
-(QXNewPeoplePopView *)nPeopleRechargeView{
|
||||||
|
if (!_nPeopleRechargeView) {
|
||||||
|
_nPeopleRechargeView = [[QXNewPeoplePopView alloc] init];
|
||||||
}
|
}
|
||||||
return _firstRechargeBtn;
|
return _nPeopleRechargeView;
|
||||||
}
|
}
|
||||||
-(UIButton *)skyDownBtn{
|
-(NSMutableArray *)rechargePermissionArray{
|
||||||
if (!_skyDownBtn) {
|
if (!_rechargePermissionArray) {
|
||||||
_skyDownBtn = [[UIButton alloc] init];
|
_rechargePermissionArray = [NSMutableArray array];
|
||||||
[_skyDownBtn setBackgroundImage:[UIImage imageNamed:@"sky_down_gift_icon"] forState:(UIControlStateNormal)];
|
|
||||||
}
|
}
|
||||||
return _skyDownBtn;
|
return _rechargePermissionArray;
|
||||||
}
|
}
|
||||||
-(QXFirstRechargePopView *)firstRechargeView{
|
|
||||||
if (!_firstRechargeView) {
|
|
||||||
_firstRechargeView = [[QXFirstRechargePopView alloc] init];
|
|
||||||
}
|
|
||||||
return _firstRechargeView;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-(QXAppstoreHomeView *)appStoreView{
|
-(QXAppstoreHomeView *)appStoreView{
|
||||||
if (!_appStoreView) {
|
if (!_appStoreView) {
|
||||||
@@ -467,4 +650,7 @@
|
|||||||
}
|
}
|
||||||
return _appStoreView;
|
return _appStoreView;
|
||||||
}
|
}
|
||||||
|
-(void)dealloc{
|
||||||
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#import "QXRankCPListCell.h"
|
#import "QXRankCPListCell.h"
|
||||||
#import "QXRankCPTopThreeView.h"
|
#import "QXRankCPTopThreeView.h"
|
||||||
#import "QXHomePageNetwork.h"
|
#import "QXHomePageNetwork.h"
|
||||||
|
#import "QXUserHomePageViewController.h"
|
||||||
|
|
||||||
@interface QXRankHomeSubVC ()<UITableViewDelegate,UITableViewDataSource>
|
@interface QXRankHomeSubVC ()<UITableViewDelegate,UITableViewDataSource>
|
||||||
@property (nonatomic,strong)QXRankTypeView *rankTypeView;
|
@property (nonatomic,strong)QXRankTypeView *rankTypeView;
|
||||||
@@ -189,6 +190,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
|
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
QXMyRankModel *model = self.dataArray[indexPath.row];
|
||||||
|
// if (self.rankType == 0) {
|
||||||
|
// if ([model.room_id isExist]) {
|
||||||
|
// [[QXGlobal shareGlobal] joinRoomWithRoomId:model.room_id isRejoin:NO navagationController:self.navigationController];
|
||||||
|
// }
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
if (self.rankType == 1 || self.rankType == 2) {
|
||||||
|
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
|
||||||
|
vc.user_id = model.user_id;
|
||||||
|
[self.navigationController pushViewController:vc animated:YES];
|
||||||
|
return;
|
||||||
|
}
|
||||||
// if (self.rankType != 4) {//CP
|
// if (self.rankType != 4) {//CP
|
||||||
// QXHomeRoomListModel *model = self.dataArray[indexPath.row];
|
// QXHomeRoomListModel *model = self.dataArray[indexPath.row];
|
||||||
// SRPersonalViewController *pvc = [[SRPersonalViewController alloc] initWithUserId:[model.user_id longLongValue]];
|
// SRPersonalViewController *pvc = [[SRPersonalViewController alloc] initWithUserId:[model.user_id longLongValue]];
|
||||||
|
|||||||
@@ -29,7 +29,8 @@
|
|||||||
}
|
}
|
||||||
-(void)initSubViews{
|
-(void)initSubViews{
|
||||||
self.view.backgroundColor = [UIColor whiteColor];
|
self.view.backgroundColor = [UIColor whiteColor];
|
||||||
self.titles = @[@"房间榜", @"财富榜", @"魅力榜",@"公会榜",@"真爱榜"];
|
// self.titles = @[@"房间榜", @"财富榜", @"魅力榜",@"公会榜",@"真爱榜"];
|
||||||
|
self.titles = @[@"房间榜", @"财富榜", @"魅力榜",@"真爱榜"];
|
||||||
self.listVCArray = [NSMutableArray array];
|
self.listVCArray = [NSMutableArray array];
|
||||||
self.categoryView = [[JXCategoryTitleView alloc] init];
|
self.categoryView = [[JXCategoryTitleView alloc] init];
|
||||||
self.categoryView.frame = CGRectMake(0, 0, SCREEN_WIDTH-100, 44);
|
self.categoryView.frame = CGRectMake(0, 0, SCREEN_WIDTH-100, 44);
|
||||||
@@ -39,10 +40,10 @@
|
|||||||
self.categoryView.titleColor = [UIColor colorWithHexString:@"#999999"];
|
self.categoryView.titleColor = [UIColor colorWithHexString:@"#999999"];
|
||||||
JXCategoryIndicatorImageView *indicatorImageView = [[JXCategoryIndicatorImageView alloc] init];
|
JXCategoryIndicatorImageView *indicatorImageView = [[JXCategoryIndicatorImageView alloc] init];
|
||||||
indicatorImageView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
|
indicatorImageView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
|
||||||
indicatorImageView.indicatorWidth = (SCREEN_WIDTH-100)/5.0;
|
indicatorImageView.indicatorWidth = (SCREEN_WIDTH-100)/self.titles.count;
|
||||||
indicatorImageView.indicatorHeight = 5;
|
indicatorImageView.indicatorHeight = 5;
|
||||||
self.categoryView.indicators = @[indicatorImageView];
|
self.categoryView.indicators = @[indicatorImageView];
|
||||||
self.categoryView.cellWidth = (SCREEN_WIDTH-100)/5.0;
|
self.categoryView.cellWidth = (SCREEN_WIDTH-100)/self.titles.count;
|
||||||
self.categoryView.contentEdgeInsetLeft = 0;
|
self.categoryView.contentEdgeInsetLeft = 0;
|
||||||
self.categoryView.cellSpacing = 0;
|
self.categoryView.cellSpacing = 0;
|
||||||
self.categoryView.titleLabelZoomScale = 1.1;
|
self.categoryView.titleLabelZoomScale = 1.1;
|
||||||
@@ -61,7 +62,11 @@
|
|||||||
}
|
}
|
||||||
-(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
|
-(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
|
||||||
QXRankHomeSubVC *vc = [[QXRankHomeSubVC alloc] init];
|
QXRankHomeSubVC *vc = [[QXRankHomeSubVC alloc] init];
|
||||||
|
if (index == 3) {
|
||||||
|
vc.rankType = 4;
|
||||||
|
}else{
|
||||||
vc.rankType = index;
|
vc.rankType = index;
|
||||||
|
}
|
||||||
return vc;
|
return vc;
|
||||||
}
|
}
|
||||||
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
||||||
|
|||||||
@@ -18,8 +18,7 @@
|
|||||||
@interface QXSearchViewController ()<UIGestureRecognizerDelegate,UICollectionViewDelegate,UICollectionViewDataSource,ZLCollectionViewBaseFlowLayoutDelegate,QXSearchTopViewDelegate>
|
@interface QXSearchViewController ()<UIGestureRecognizerDelegate,UICollectionViewDelegate,UICollectionViewDataSource,ZLCollectionViewBaseFlowLayoutDelegate,QXSearchTopViewDelegate>
|
||||||
@property(nonatomic,strong)UICollectionView* collectionView;
|
@property(nonatomic,strong)UICollectionView* collectionView;
|
||||||
@property(nonatomic,strong)QXSearchTopView *topView;
|
@property(nonatomic,strong)QXSearchTopView *topView;
|
||||||
|
@property(nonatomic,strong)QXSearchListModel *model;
|
||||||
@property(nonatomic,strong)NSMutableArray *resultArray;
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation QXSearchViewController
|
@implementation QXSearchViewController
|
||||||
@@ -56,23 +55,22 @@
|
|||||||
|
|
||||||
-(void)searchActionWithKeywords:(NSString *)keywords{
|
-(void)searchActionWithKeywords:(NSString *)keywords{
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
[QXMineNetwork searchApiWithType:2 search:keywords successBlock:^(NSDictionary * _Nonnull dict) {
|
[QXMineNetwork searchListApiWithKetwords:keywords successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
[weakSelf.resultArray removeAllObjects];
|
QXSearchListModel *model = [QXSearchListModel yy_modelWithJSON:dict];
|
||||||
NSArray *arr = [NSArray yy_modelArrayWithClass:[QXSearchModel class] json:dict];
|
weakSelf.model = model;
|
||||||
if (arr.count == 0) {
|
if (weakSelf.model.users.count == 0 && weakSelf.model.rooms.count == 0) {
|
||||||
showToast(@"暂无搜索结果");
|
showToast(@"暂无搜索结果");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[weakSelf.resultArray addObjectsFromArray:arr];
|
|
||||||
[weakSelf pushToResultVC];
|
[weakSelf pushToResultVC];
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
showToast(msg);
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)pushToResultVC{
|
-(void)pushToResultVC{
|
||||||
QXHomeSearchResultVC *vc = [[QXHomeSearchResultVC alloc] init];
|
QXHomeSearchResultVC *vc = [[QXHomeSearchResultVC alloc] init];
|
||||||
vc.resultArray = self.resultArray;
|
vc.model = self.model;
|
||||||
[self.navigationController pushViewController:vc animated:YES];
|
[self.navigationController pushViewController:vc animated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,11 +133,6 @@
|
|||||||
}
|
}
|
||||||
return _topView;
|
return _topView;
|
||||||
}
|
}
|
||||||
-(NSMutableArray *)resultArray{
|
|
||||||
if (!_resultArray) {
|
|
||||||
_resultArray = [NSMutableArray array];
|
|
||||||
}
|
|
||||||
return _resultArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
//
|
||||||
|
// QXRedBagRecordViewController.h
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/10/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXBaseViewController.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface QXRedBagRecordViewController : QXBaseViewController
|
||||||
|
@property (nonatomic,strong)NSString *redbagId;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface QXRedBagRecordCell : UITableViewCell
|
||||||
|
@property (nonatomic,strong)QXDrawRedpacketRecordModel *recordModel;
|
||||||
|
+(instancetype)cellWithTabelView:(UITableView*)tableView;
|
||||||
|
@end
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
@@ -0,0 +1,262 @@
|
|||||||
|
//
|
||||||
|
// QXRedBagRecordViewController.m
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/10/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRedBagRecordViewController.h"
|
||||||
|
#import "QXMineNetwork.h"
|
||||||
|
@class QXRedBagRecordCell;
|
||||||
|
@interface QXRedBagRecordViewController ()<UITableViewDataSource,UITableViewDelegate>
|
||||||
|
@property (nonatomic,strong)UIView *topView;
|
||||||
|
@property (nonatomic,strong)UIImageView *topImageView;
|
||||||
|
@property (nonatomic,strong)UIImageView *senderHeaderImageView;
|
||||||
|
@property (nonatomic,strong)UILabel *senderNameLabel;
|
||||||
|
@property (nonatomic,strong)UILabel *remarkLabel;
|
||||||
|
@property (nonatomic,strong)UILabel *moneyLabel;
|
||||||
|
@property (nonatomic,strong)UILabel *bottomLabel;
|
||||||
|
@property (nonatomic,strong)UILabel *countLabel;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)UITableView *tableView;
|
||||||
|
@property (nonatomic,strong)QXDrawRedPacketModel *model;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation QXRedBagRecordViewController
|
||||||
|
|
||||||
|
- (void)viewDidLoad {
|
||||||
|
[super viewDidLoad];
|
||||||
|
// Do any additional setup after loading the view.
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)initSubViews{
|
||||||
|
|
||||||
|
self.topView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(308))];
|
||||||
|
self.topImageView = [[UIImageView alloc] init];
|
||||||
|
self.topImageView.image = [UIImage imageNamed:@"red_bag_record_top_bg"];
|
||||||
|
[self.topView addSubview:self.topImageView];
|
||||||
|
[self.topImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.bottom.left.right.equalTo(self.topView);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.senderNameLabel = [[UILabel alloc] init];
|
||||||
|
self.senderNameLabel.textColor = RGB16(0xffffff);
|
||||||
|
self.senderNameLabel.font = [UIFont systemFontOfSize:18];
|
||||||
|
self.senderNameLabel.text = @"-";
|
||||||
|
[self.topView addSubview:self.senderNameLabel];
|
||||||
|
[self.senderNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerX.equalTo(self.topView).offset(41-13);;
|
||||||
|
make.top.equalTo(self.topView).offset(92);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.senderHeaderImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
||||||
|
self.senderHeaderImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
[self.senderHeaderImageView addRoundedCornersWithRadius:20.5];
|
||||||
|
[self.topView addSubview:self.senderHeaderImageView];
|
||||||
|
[self.senderHeaderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.right.equalTo(self.senderNameLabel.mas_left).offset(-13);
|
||||||
|
make.centerY.equalTo(self.senderNameLabel);
|
||||||
|
make.width.height.mas_equalTo(41);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.remarkLabel = [[UILabel alloc] init];
|
||||||
|
self.remarkLabel.text = @"-";
|
||||||
|
self.remarkLabel.textColor = RGB16(0xffffff);
|
||||||
|
self.remarkLabel.font = [UIFont systemFontOfSize:13];
|
||||||
|
[self.topView addSubview:self.remarkLabel];
|
||||||
|
[self.remarkLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.equalTo(self.senderHeaderImageView.mas_bottom).offset(5);
|
||||||
|
make.height.mas_equalTo(26);
|
||||||
|
make.centerX.equalTo(self.topView);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.moneyLabel = [[UILabel alloc] init];
|
||||||
|
self.moneyLabel.font = [UIFont boldSystemFontOfSize:19];
|
||||||
|
self.moneyLabel.textColor = RGB16(0xffffff);
|
||||||
|
self.moneyLabel.text = @"0金币";
|
||||||
|
[self.topView addSubview:self.moneyLabel];
|
||||||
|
[self.moneyLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerX.equalTo(self.topView);
|
||||||
|
make.top.equalTo(self.remarkLabel.mas_bottom);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.bottomLabel = [[UILabel alloc] init];
|
||||||
|
self.bottomLabel.textColor = RGB16(0xffffff);
|
||||||
|
self.bottomLabel.text = @"已存入钱包";
|
||||||
|
self.bottomLabel.font = [UIFont systemFontOfSize:13];
|
||||||
|
[self.topView addSubview:self.bottomLabel];
|
||||||
|
[self.bottomLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerX.equalTo(self.topView);
|
||||||
|
make.top.equalTo(self.moneyLabel.mas_bottom);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.countLabel = [[UILabel alloc] init];
|
||||||
|
self.countLabel.textColor = RGB16(0x999999);
|
||||||
|
self.countLabel.font = [UIFont systemFontOfSize:13];
|
||||||
|
self.countLabel.text = @"已领取0/0";
|
||||||
|
[self.topView addSubview:self.countLabel];
|
||||||
|
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.mas_equalTo (15);
|
||||||
|
make.bottom.mas_equalTo(-10);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.view addSubview:self.topView];
|
||||||
|
|
||||||
|
|
||||||
|
[self.dataArray addObject:@""];
|
||||||
|
[self.dataArray addObject:@""];
|
||||||
|
[self.dataArray addObject:@""];
|
||||||
|
[self.dataArray addObject:@""];
|
||||||
|
[self.dataArray addObject:@""];
|
||||||
|
|
||||||
|
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:(UITableViewStylePlain)];
|
||||||
|
self.tableView.dataSource = self;
|
||||||
|
self.tableView.delegate = self;
|
||||||
|
self.tableView.backgroundColor = RGB16(0xffffff);
|
||||||
|
self.tableView.rowHeight = 67;
|
||||||
|
|
||||||
|
// self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
|
||||||
|
[self.view addSubview:self.tableView];
|
||||||
|
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.right.bottom.equalTo(self.view);
|
||||||
|
make.top.equalTo(self.topView.mas_bottom);
|
||||||
|
}];
|
||||||
|
|
||||||
|
UIButton*backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, kSafeAreaTop, 44, 44)];
|
||||||
|
[backBtn setImage:[[UIImage imageNamed:@"back"] imageByTintColor:UIColor.whiteColor] forState:(UIControlStateNormal)];
|
||||||
|
// backBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeading;
|
||||||
|
[backBtn addTarget:self action:@selector(backAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||||
|
[self.view addSubview:backBtn];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setRedbagId:(NSString *)redbagId{
|
||||||
|
_redbagId = redbagId;
|
||||||
|
MJWeakSelf
|
||||||
|
[QXMineNetwork getRedpacketRecordWithRedpacketId:redbagId successBlock:^(QXDrawRedPacketModel* model) {
|
||||||
|
weakSelf.model = model;
|
||||||
|
weakSelf.remarkLabel.text = model.redpacket_info.remark;
|
||||||
|
[weakSelf.senderHeaderImageView sd_setImageWithURL:[NSURL URLWithString:model.redpacket_info.avatar]];
|
||||||
|
weakSelf.senderNameLabel.text = [NSString stringWithFormat:@"%@的红包",model.redpacket_info.nickname];
|
||||||
|
NSString *coinStr = @"";
|
||||||
|
if (weakSelf.model.redpacket_info.coin_type.intValue == 1) {
|
||||||
|
weakSelf.bottomLabel.text = @"已存入金币";
|
||||||
|
coinStr = [NSString stringWithFormat:@"%@%@",model.my_record.amount?model.my_record.amount:@"0",@"金币"];
|
||||||
|
}else{
|
||||||
|
weakSelf.bottomLabel.text = @"已存入钻石";
|
||||||
|
coinStr = [NSString stringWithFormat:@"%@%@",model.my_record.amount?model.my_record.amount:@"0",@"钻石"];
|
||||||
|
}
|
||||||
|
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:coinStr];
|
||||||
|
[attr yy_setFont:[UIFont boldSystemFontOfSize:46] range:[coinStr rangeOfString:[NSString stringWithFormat:@"%@",model.my_record.amount?model.my_record.amount:@"0"]]];
|
||||||
|
weakSelf.moneyLabel.attributedText = attr;
|
||||||
|
weakSelf.countLabel.text = [NSString stringWithFormat:@"已领取%ld/%@",model.redpacket_info.total_count.integerValue-model.redpacket_info.left_count.integerValue,model.redpacket_info.total_count];
|
||||||
|
[weakSelf.tableView reloadData];
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
||||||
|
return self.model.records.count;
|
||||||
|
}
|
||||||
|
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||||
|
QXRedBagRecordCell *cell = [QXRedBagRecordCell cellWithTabelView:tableView];
|
||||||
|
cell.recordModel = self.model.records[indexPath.row];
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
-(void)backAction{
|
||||||
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface QXRedBagRecordCell()
|
||||||
|
@property (nonatomic,strong)UIView *bgView;
|
||||||
|
@property (nonatomic,strong)UIImageView *userHeaderImageView;
|
||||||
|
@property (nonatomic,strong)UILabel *nameLabel;
|
||||||
|
@property (nonatomic,strong)UILabel *timeLabel;
|
||||||
|
@property (nonatomic,strong)UILabel *moneyLabel;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation QXRedBagRecordCell
|
||||||
|
|
||||||
|
+(instancetype)cellWithTabelView:(UITableView *)tableView{
|
||||||
|
static NSString *cellId = @"QXRedBagRecordCell";
|
||||||
|
QXRedBagRecordCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
||||||
|
if (!cell) {
|
||||||
|
cell = [[QXRedBagRecordCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:cellId];
|
||||||
|
}
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
|
||||||
|
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||||
|
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||||
|
self.backgroundColor = [UIColor clearColor];
|
||||||
|
[self initSubviews];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
-(void)setRecordModel:(QXDrawRedpacketRecordModel *)recordModel{
|
||||||
|
_recordModel = recordModel;
|
||||||
|
self.nameLabel.text = recordModel.nickname;
|
||||||
|
[self.userHeaderImageView sd_setImageWithURL:[NSURL URLWithString:recordModel.avatar]];
|
||||||
|
self.timeLabel.text = recordModel.createtime;
|
||||||
|
self.moneyLabel.text = recordModel.amount;
|
||||||
|
}
|
||||||
|
-(void)initSubviews{
|
||||||
|
self.bgView = [[UIView alloc] init];
|
||||||
|
[self.contentView addSubview:self.bgView];
|
||||||
|
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.mas_equalTo(15);
|
||||||
|
make.right.mas_equalTo(-15);
|
||||||
|
make.height.mas_equalTo(52);
|
||||||
|
make.centerY.equalTo(self.contentView);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.userHeaderImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
||||||
|
self.userHeaderImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
[self.userHeaderImageView addRoundedCornersWithRadius:24.5];
|
||||||
|
[self.bgView addSubview:self.userHeaderImageView];
|
||||||
|
[self.userHeaderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.centerY.equalTo(self.bgView);
|
||||||
|
make.width.height.mas_equalTo(49);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.nameLabel = [[UILabel alloc] init];
|
||||||
|
self.nameLabel.textColor = RGB16(0x666666);
|
||||||
|
self.nameLabel.text = @"大家好,我是傻狗涛";
|
||||||
|
self.nameLabel.font = [UIFont systemFontOfSize:14];
|
||||||
|
[self.bgView addSubview:self.nameLabel];
|
||||||
|
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.equalTo(self.userHeaderImageView.mas_right).offset(13);
|
||||||
|
make.top.equalTo(self.userHeaderImageView);
|
||||||
|
make.height.mas_equalTo(26);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.timeLabel = [[UILabel alloc] init];
|
||||||
|
self.timeLabel.textColor = RGB16(0x999999);
|
||||||
|
self.timeLabel.font = [UIFont systemFontOfSize:14];
|
||||||
|
self.timeLabel.text = @"00:61";
|
||||||
|
[self.bgView addSubview:self.timeLabel];
|
||||||
|
[self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.equalTo(self.userHeaderImageView.mas_right).offset(13);
|
||||||
|
make.bottom.equalTo(self.userHeaderImageView);
|
||||||
|
make.height.mas_equalTo(26);
|
||||||
|
}];
|
||||||
|
|
||||||
|
self.moneyLabel = [[UILabel alloc] init];
|
||||||
|
self.moneyLabel.textColor = RGB16(0x333333);
|
||||||
|
self.moneyLabel.text = @"0 金币";
|
||||||
|
self.moneyLabel.font = [UIFont systemFontOfSize:14];
|
||||||
|
[self.bgView addSubview:self.moneyLabel];
|
||||||
|
[self.moneyLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.right.equalTo(self.bgView);
|
||||||
|
make.centerY.equalTo(self.bgView);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
@end
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// QXRoomViewController+Activity.h
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/10/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRoomViewController.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface QXRoomViewController (Activity)
|
||||||
|
-(void)initActivityObeserver;
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// QXRoomViewController+Activity.m
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/10/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRoomViewController+Activity.h"
|
||||||
|
#import "QXMeetActivityDriftView.h"
|
||||||
|
@implementation QXRoomViewController (Activity)
|
||||||
|
|
||||||
|
-(void)initActivityObeserver{
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateProgress:) name:noticeXLHNotice object:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)updateProgress:(NSNotification *)notice{
|
||||||
|
QXMeetActivityDriftModel *model = notice.object;
|
||||||
|
if (model.from_type == QXMeetActivityTypeAcLock) {
|
||||||
|
[self.meetView updateUserAndGiftInfoWithModel:model];
|
||||||
|
self.acTagView.end_time = model.end_time.longLongValue;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (model.from_type == QXMeetActivityTypeAcProgress) {
|
||||||
|
[self.skyView updateProgress:model.xlh_data];
|
||||||
|
[self.ageView updateProgress:model.xlh_data];
|
||||||
|
[self.timeView updateProgress:model.xlh_data];
|
||||||
|
}
|
||||||
|
if (model.xlh_data.status.intValue == 1) {
|
||||||
|
self.acTagView.end_time = model.xlh_data.end_time;
|
||||||
|
[self.view addSubview:self.acTagView];
|
||||||
|
}else{
|
||||||
|
[self.acTagView stopTimer];
|
||||||
|
[self.acTagView removeFromSuperview];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@end
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//
|
||||||
|
// QXRoomViewController+Friend.h
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/8/20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRoomViewController.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface QXRoomViewController (Friend)
|
||||||
|
/// 重置麦位视图
|
||||||
|
-(void)resetFriendViews;
|
||||||
|
|
||||||
|
/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
|
||||||
|
//-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id;
|
||||||
|
///// 交友房时间发生延时 end_time 截止时间
|
||||||
|
//-(void)friendTimeDelayWithTime:(NSString*)end_time;
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
121
QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.m
Normal file
121
QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.m
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
//
|
||||||
|
// QXRoomViewController+Friend.m
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/8/20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRoomViewController+Friend.h"
|
||||||
|
#import "QXAgoraEngine.h"
|
||||||
|
@implementation QXRoomViewController (Friend)
|
||||||
|
|
||||||
|
-(void)resetFriendViews{
|
||||||
|
[self.seatContentView setType:QXRoomSeatViewTypeFriend];
|
||||||
|
[self.seatContentView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.right.equalTo(self.view);
|
||||||
|
make.top.mas_equalTo(self.titleView.bottom);
|
||||||
|
make.height.mas_equalTo(ScaleWidth(377));
|
||||||
|
}];
|
||||||
|
[self.chatListView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.bottom.equalTo(self.bottomView.mas_top);
|
||||||
|
make.left.equalTo(self.view);
|
||||||
|
make.top.equalTo(self.seatContentView.mas_bottom);
|
||||||
|
// make.right.equalTo(self.soundBtn.mas_left).offset(-16);
|
||||||
|
make.width.mas_equalTo(ScaleWidth(280));
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(nonnull QXRoomFriendRelationModel *)relationModel{
|
||||||
|
[self.seatContentView friendPartDidChangedWithType:step friend_id:friend_id end_time:end_time relationModel:relationModel];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)friendTimeDelayWithTime:(NSString *)end_time{
|
||||||
|
[self.seatContentView friendTimeDelayWithTime:end_time];
|
||||||
|
}
|
||||||
|
-(void)friendSeatDidChanged:(NSArray<QXRoomPitModel *> *)pitArray{
|
||||||
|
BOOL haveMe = NO;
|
||||||
|
if (self.seatContentView.myPitNumber == 9 || self.seatContentView.myPitNumber == 10) {
|
||||||
|
haveMe = YES;
|
||||||
|
}
|
||||||
|
for (QXRoomPitModel*md in pitArray) {
|
||||||
|
if ([md.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||||
|
self.seatContentView.myPitNumber = md.pit_number.integerValue;
|
||||||
|
haveMe = YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (haveMe == NO) {
|
||||||
|
self.bottomView.status = 1;
|
||||||
|
[[QXAgoraEngine sharedEngine] setClientRoleBroadcaster:NO];
|
||||||
|
}else{
|
||||||
|
self.bottomView.status = 2;
|
||||||
|
if ([QXAgoraEngine sharedEngine].isOpenMic) {
|
||||||
|
[self.bottomView setMuteAudioStatus:1];
|
||||||
|
}else{
|
||||||
|
[self.bottomView setMuteAudioStatus:0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[self.seatContentView friendSeatDidChanged:pitArray];
|
||||||
|
}
|
||||||
|
-(void)friendPowerSendGiftWithUser:(QXRoomPitModel *)user heartId:(NSString *)heartId{
|
||||||
|
self.sendGiftView.type = QXSendGiftViewTypeFriend;
|
||||||
|
QXRoomPitModel *model = [[QXRoomPitModel alloc] init];
|
||||||
|
model.pit_number = user.pit_number;
|
||||||
|
model.user_id = user.user_id;
|
||||||
|
model.nickname = user.nickname;
|
||||||
|
model.avatar = user.avatar;
|
||||||
|
self.sendGiftView.userModel = model;
|
||||||
|
self.sendGiftView.heartId = heartId;
|
||||||
|
self.sendGiftView.roomId = self.roomId;
|
||||||
|
[self.sendGiftView showInView:self.view];
|
||||||
|
}
|
||||||
|
-(void)friendHeartNumberDidChanged:(NSArray<QXRoomFriendHeartListModel *> *)heartArray{
|
||||||
|
[self.seatContentView friendHeartNumberDidChanged:heartArray];
|
||||||
|
}
|
||||||
|
/// 关系创建完成
|
||||||
|
-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel{
|
||||||
|
[self.seatContentView friendRelationIsCreatedWithrelationModel:relationModel];
|
||||||
|
}
|
||||||
|
/// 有人退出交友房私密小屋
|
||||||
|
-(void)friendCabinRoomIsQuit{
|
||||||
|
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
|
||||||
|
|
||||||
|
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
|
||||||
|
for (int i = 0; i < viewControllers.count; i++) {
|
||||||
|
UIViewController *vc = [viewControllers objectAtIndex:i];
|
||||||
|
if ([vc isEqual:self]) {
|
||||||
|
QXRoomViewController *roomVc = [[QXRoomViewController alloc] init];
|
||||||
|
roomVc.roomId = QXGlobal.shareGlobal.superRoomId;
|
||||||
|
[viewControllers insertObject:roomVc atIndex:i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.navigationController.viewControllers = viewControllers;
|
||||||
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
|
QXGlobal.shareGlobal.superRoomId = @"";
|
||||||
|
// [self.navigationController popViewControllerAnimated:YES];
|
||||||
|
}
|
||||||
|
/// 私密小屋时间发生延时
|
||||||
|
-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time{
|
||||||
|
[self.seatContentView friendCabinRoomTimeDelayWithTime:end_time];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(void)meetActivityProgressIsUpdate:(NSDictionary *)updateDict{
|
||||||
|
QXXLHModel *model = [QXXLHModel yy_modelWithJSON:updateDict[@"xlh_data"]];
|
||||||
|
[self.skyView updateProgress:model];
|
||||||
|
[self.ageView updateProgress:model];
|
||||||
|
[self.timeView updateProgress:model];
|
||||||
|
if (model.status.intValue == 1) {
|
||||||
|
self.acTagView.end_time = model.end_time;
|
||||||
|
[self.view addSubview:self.acTagView];
|
||||||
|
}else{
|
||||||
|
[self.acTagView stopTimer];
|
||||||
|
[self.acTagView removeFromSuperview];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)meetActivityGiftInfoIsUpdate:(QXRoomChatListModel *)giftInfo{
|
||||||
|
// [self.meetView updateUserAndGiftInfoWithModel:giftInfo];
|
||||||
|
// self.acTagView.end_time = giftInfo.end_time.longLongValue;
|
||||||
|
}
|
||||||
|
@end
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// QXRoomViewController+RedPacket.h
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/10/13.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRoomViewController.h"
|
||||||
|
#import "QXRedPacketManager.h"
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface QXRoomViewController (RedPacket)<QXRedPacketManagerDelegate>
|
||||||
|
-(void)initRedpacketManager;
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
//
|
||||||
|
// QXRoomViewController+RedPacket.m
|
||||||
|
// QXLive
|
||||||
|
//
|
||||||
|
// Created by 启星 on 2025/10/13.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "QXRoomViewController+RedPacket.h"
|
||||||
|
#import "QXMineNetwork.h"
|
||||||
|
@implementation QXRoomViewController (RedPacket)
|
||||||
|
-(void)recievedRedPacket:(QXRedPacketModel *)model{
|
||||||
|
self.redBagTagView.hidden = NO;
|
||||||
|
[[QXRedPacketManager sharedManager] addRedPacket:model];
|
||||||
|
}
|
||||||
|
-(void)redPacketDidFinished:(NSString *)redpacket_id{
|
||||||
|
[[QXRedPacketManager sharedManager] removeRedPacket:redpacket_id];
|
||||||
|
NSArray *arr = [QXRedPacketManager sharedManager].allRedPackets;
|
||||||
|
if (self.redbagListView) {
|
||||||
|
self.redbagListView.dataArray = arr;
|
||||||
|
}
|
||||||
|
self.redBagTagView.count = [NSString stringWithFormat:@"%ld",arr.count];
|
||||||
|
}
|
||||||
|
-(void)initRedpacketManager{
|
||||||
|
[QXRedPacketManager sharedManager].delegate = self;
|
||||||
|
[[QXRedPacketManager sharedManager] startCheckTimer];
|
||||||
|
// 获取红包列表
|
||||||
|
[self getRedBagList];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)getRedBagList{
|
||||||
|
MJWeakSelf
|
||||||
|
[QXMineNetwork getRedpacketListWithRoomId:self.roomId successBlock:^(NSArray<QXRedPacketModel *> * _Nonnull list) {
|
||||||
|
if (list.count > 0) {
|
||||||
|
weakSelf.redBagTagView.count = [NSString stringWithFormat:@"%ld",list.count];
|
||||||
|
weakSelf.redBagTagView.hidden = NO;
|
||||||
|
[[QXRedPacketManager sharedManager] addRedPackets:list];
|
||||||
|
}else{
|
||||||
|
[[QXRedPacketManager sharedManager] removeAllRedpackets];
|
||||||
|
}
|
||||||
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
#pragma mark - QXRedPacketManagerDelegate
|
||||||
|
/// 添加红包成功
|
||||||
|
-(void)QXRedPacketManager:(QXRedPacketManager *)manager didAddRedPacket:(QXRedPacketModel *)redPacket remainingCount:(NSInteger)remainingCount{
|
||||||
|
self.redBagTagView.count = [NSString stringWithFormat:@"%ld",remainingCount];
|
||||||
|
}
|
||||||
|
/// 移除红包回调
|
||||||
|
- (void)QXRedPacketManager:(QXRedPacketManager *)manager didRemoveRedPacket:(NSString *)packetId remainingCount:(NSInteger)remainingCount{
|
||||||
|
self.redBagTagView.count = [NSString stringWithFormat:@"%ld",remainingCount];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 更新红包回调
|
||||||
|
- (void)QXRedPacketManager:(QXRedPacketManager *)manager didUpdateRedPacket:(QXRedPacketModel *)redPacket remainingCount:(NSInteger)remainingCount{
|
||||||
|
if (self.redbagDrawView.redpacketModel != nil && self.redbagDrawView.redpacketModel.countdown > 0) {
|
||||||
|
if (self.redbagDrawView.redpacketModel.type.intValue == 1) {
|
||||||
|
[self.redbagDrawView changeViewType:(QXRedBagDrawTypeOpen)];
|
||||||
|
}else{
|
||||||
|
if (self.redbagDrawView.isFromToComment) {
|
||||||
|
[self.redbagDrawView changeViewType:(QXRedBagDrawTypeOpen)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)QXRedPacketManager:(QXRedPacketManager *)manager didAddRedPackets:(NSArray<QXRedPacketModel *> *)redPackets remainingCount:(NSInteger)remainingCount{
|
||||||
|
self.redBagTagView.count = [NSString stringWithFormat:@"%ld",remainingCount];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)QXRedPacketManager:(QXRedPacketManager *)manager didUpdateRedPacketTime:(long)time redPacket:(QXRedPacketModel *)redPacket {
|
||||||
|
/// 开红包的倒计时
|
||||||
|
if (self.redbagDrawView.redpacketModel != nil && self.redbagDrawView.redpacketModel.countdown > 0 && time>=0) {
|
||||||
|
if (self.redbagDrawView.redpacketModel.type.intValue == 1) {
|
||||||
|
// 普通红包
|
||||||
|
if ([self.redbagDrawView.redpacketModel.conditions containsString:@"1"]) {
|
||||||
|
// 有收藏房间条件
|
||||||
|
if (self.roomModel.user_info.is_collect.intValue == 1) {
|
||||||
|
/// 需要满足收藏再倒计时
|
||||||
|
if (redPacket == self.redbagDrawView.redpacketModel) {
|
||||||
|
self.redbagDrawView.needTime = time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (redPacket == self.redbagDrawView.redpacketModel) {
|
||||||
|
self.redbagDrawView.needTime = time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (self.redbagDrawView.isFromToComment) {
|
||||||
|
// 普通红包
|
||||||
|
if ([self.redbagDrawView.redpacketModel.conditions containsString:@"1"]) {
|
||||||
|
// 有收藏房间条件
|
||||||
|
if (self.roomModel.user_info.is_collect.intValue == 1) {
|
||||||
|
/// 需要满足收藏再倒计时
|
||||||
|
if (redPacket == self.redbagDrawView.redpacketModel) {
|
||||||
|
self.redbagDrawView.needTime = time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (redPacket == self.redbagDrawView.redpacketModel) {
|
||||||
|
self.redbagDrawView.needTime = time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 红包列表的倒计时
|
||||||
|
if (self.redbagListView.dataArray.count > 0) {
|
||||||
|
NSInteger index = [self.redbagListView.dataArray indexOfObject:redPacket];
|
||||||
|
[self.redbagListView updateRedpacketTimeWithIndex:index time:time];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -6,13 +6,60 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "QXBaseViewController.h"
|
#import "QXBaseViewController.h"
|
||||||
|
#import "QXGlobal.h"
|
||||||
|
#import "QXRoomSeatView.h"
|
||||||
|
#import "QXRoomChatListView.h"
|
||||||
|
#import "QXRoomTitleView.h"
|
||||||
|
#import "QXRoomBottomView.h"
|
||||||
|
#import "QXRoomMessageManager.h"
|
||||||
|
#import "QXSendGiftView.h"
|
||||||
|
|
||||||
|
/// 活动
|
||||||
|
#import "QXSkyPraizeView.h"/// 天空之境
|
||||||
|
#import "QXAgePraizeView.h"/// 岁月之城
|
||||||
|
#import "QXTimePraizeView.h"/// 时空之巅
|
||||||
|
#import "QXMeetActivityView.h"
|
||||||
|
#import "QXActivityTagView.h"
|
||||||
|
|
||||||
|
/// 红包
|
||||||
|
#import "QXRedBagTagView.h"
|
||||||
|
#import "QXRedBagDrawView.h"
|
||||||
|
#import "QXRedBagListView.h"
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface QXRoomViewController : QXBaseViewController
|
@interface QXRoomViewController : QXBaseViewController<QXRoomMessageManagerDelegate,QXRoomSeatDelegate>
|
||||||
@property (nonatomic,strong)NSString *roomId;
|
@property (nonatomic,strong)NSString *roomId;
|
||||||
/// 是否为最小化房间进来
|
/// 是否为最小化房间进来
|
||||||
@property (nonatomic,assign)BOOL isReJoin;
|
@property (nonatomic,assign)BOOL isReJoin;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)QXRoomModel* roomModel;
|
||||||
|
/// 麦位视图
|
||||||
|
@property (nonatomic,strong)QXRoomSeatView *seatContentView;
|
||||||
|
/// 聊天列表
|
||||||
|
@property (nonatomic,strong)QXRoomChatListView *chatListView;
|
||||||
|
/// 顶部房间信息
|
||||||
|
@property (nonatomic,strong)QXRoomTitleView *titleView;
|
||||||
|
/// 底部工具栏
|
||||||
|
@property (nonatomic,strong)QXRoomBottomView *bottomView;
|
||||||
|
/// 发送礼物
|
||||||
|
@property (nonatomic,strong)QXSendGiftView *sendGiftView;
|
||||||
|
|
||||||
|
/// 红包入口
|
||||||
|
@property (nonatomic,strong)QXRedBagTagView *redBagTagView;
|
||||||
|
@property (nonatomic,strong)QXRedBagDrawView *redbagDrawView;
|
||||||
|
@property (nonatomic,strong)QXRedBagListView *redbagListView;
|
||||||
|
|
||||||
|
|
||||||
|
@property (nonatomic,strong)QXActivityTagView *acTagView;
|
||||||
|
@property (nonatomic,strong)QXSkyPraizeView *skyView;
|
||||||
|
@property (nonatomic,strong)QXAgePraizeView *ageView;
|
||||||
|
@property (nonatomic,strong)QXTimePraizeView *timeView;
|
||||||
|
/// 巡乐会
|
||||||
|
@property (nonatomic,strong)QXMeetActivityView *meetView;
|
||||||
|
-(void)configBottomTools;
|
||||||
|
-(void)stopHWDMP4;
|
||||||
|
-(void)playHWDMP4;
|
||||||
|
-(void)destroyViews;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user