优化提交
This commit is contained in:
2
Podfile
2
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'
|
||||||
#图片加载
|
#图片加载
|
||||||
|
|||||||
@@ -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):
|
||||||
@@ -251,6 +252,7 @@ DEPENDENCIES:
|
|||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
- FMDB
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView/Pager
|
- JXPagingView/Pager
|
||||||
- LLDebugTool
|
- LLDebugTool
|
||||||
@@ -293,6 +295,7 @@ SPEC REPOS:
|
|||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
- FMDB
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView
|
- JXPagingView
|
||||||
- libwebp
|
- libwebp
|
||||||
@@ -346,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
|
||||||
@@ -380,6 +384,6 @@ SPEC CHECKSUMS:
|
|||||||
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
||||||
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
||||||
|
|
||||||
PODFILE CHECKSUM: 683d8919b3bdf1a04798d420114eaf498bc4e208
|
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
|
||||||
6
Pods/Manifest.lock
generated
6
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):
|
||||||
@@ -251,6 +252,7 @@ DEPENDENCIES:
|
|||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
- FMDB
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView/Pager
|
- JXPagingView/Pager
|
||||||
- LLDebugTool
|
- LLDebugTool
|
||||||
@@ -293,6 +295,7 @@ SPEC REPOS:
|
|||||||
- BRPickerView
|
- BRPickerView
|
||||||
- Bugly
|
- Bugly
|
||||||
- FMDB
|
- FMDB
|
||||||
|
- IQKeyboardManager
|
||||||
- JXCategoryView
|
- JXCategoryView
|
||||||
- JXPagingView
|
- JXPagingView
|
||||||
- libwebp
|
- libwebp
|
||||||
@@ -346,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
|
||||||
@@ -380,6 +384,6 @@ SPEC CHECKSUMS:
|
|||||||
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
||||||
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
Zip: b3fef584b147b6e582b2256a9815c897d60ddc67
|
||||||
|
|
||||||
PODFILE CHECKSUM: 683d8919b3bdf1a04798d420114eaf498bc4e208
|
PODFILE CHECKSUM: 0d9fb42b40922f1e7b70bca0655faf5be6d1d454
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
23865
Pods/Pods.xcodeproj/project.pbxproj
generated
23865
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>
|
||||||
@@ -79,6 +79,16 @@
|
|||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>IQKeyboardManager-IQKeyboardManager.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
<key>IQKeyboardManager.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
<key>JXCategoryView-JXCategoryView.xcscheme</key>
|
<key>JXCategoryView-JXCategoryView.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</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)
|
||||||
|
|||||||
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"
|
||||||
@@ -42,8 +42,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "362"
|
startingLineNumber = "363"
|
||||||
endingLineNumber = "362"
|
endingLineNumber = "363"
|
||||||
landmarkName = "-rtcEngine:remoteVideoStats:"
|
landmarkName = "-rtcEngine:remoteVideoStats:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -58,8 +58,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "366"
|
startingLineNumber = "367"
|
||||||
endingLineNumber = "366"
|
endingLineNumber = "367"
|
||||||
landmarkName = "-rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:"
|
landmarkName = "-rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -74,8 +74,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "372"
|
startingLineNumber = "373"
|
||||||
endingLineNumber = "372"
|
endingLineNumber = "373"
|
||||||
landmarkName = "-rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed:"
|
landmarkName = "-rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -90,8 +90,8 @@
|
|||||||
filePath = "QXLive/Config/QXAgoraEngine.m"
|
filePath = "QXLive/Config/QXAgoraEngine.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "387"
|
startingLineNumber = "388"
|
||||||
endingLineNumber = "387"
|
endingLineNumber = "388"
|
||||||
landmarkName = "-rtcEngine:channelMediaRelayStateDidChange:error:"
|
landmarkName = "-rtcEngine:channelMediaRelayStateDidChange:error:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -106,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>
|
||||||
@@ -195,16 +195,80 @@
|
|||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "5C3514EA-0AF0-426A-9A1F-10C13FE2984B"
|
uuid = "FAB2240E-81A5-43A6-939F-2FE51A892E12"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "QXLive/Config/QXRoomMessageManager.m"
|
filePath = "QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.m"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "599"
|
startingLineNumber = "1130"
|
||||||
endingLineNumber = "599"
|
endingLineNumber = "1130"
|
||||||
landmarkName = "-onReceiveRESTCustomData:data:"
|
landmarkName = "-roomUserInfoDidChanged:"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "12C5A5DB-D4B2-427C-8D06-DDAD1C02306A"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/Login(登录)/Controlller/QXLoginProtocolViewController.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "44"
|
||||||
|
endingLineNumber = "44"
|
||||||
|
landmarkName = "-initSubViews"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "BD365680-84CD-49F2-A073-EBDE86C1D229"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/Tabbar/弹窗/QXMeetActivityDriftView.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "55"
|
||||||
|
endingLineNumber = "55"
|
||||||
|
landmarkName = "-initSubviews"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "92826863-0A2E-4FCC-BF5D-455D19EC314A"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "743"
|
||||||
|
endingLineNumber = "743"
|
||||||
|
landmarkName = "-setMessage:"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "F5A81A6E-DAEB-47C9-8395-70A61EF03D4C"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "550"
|
||||||
|
endingLineNumber = "550"
|
||||||
|
landmarkName = "-setMessage:"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
@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,10 +195,11 @@
|
|||||||
[[QXGlobal shareGlobal] logOut];
|
[[QXGlobal shareGlobal] logOut];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
|
||||||
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
||||||
// navagationController.interactivePopGestureRecognizer.enabled = NO;
|
// navagationController.interactivePopGestureRecognizer.enabled = NO;
|
||||||
if (_miniView) {
|
if (_miniView) {
|
||||||
|
[[QXGiftPlayerManager shareManager] startPlay];
|
||||||
[_miniView removeFromSuperview];
|
[_miniView removeFromSuperview];
|
||||||
_miniView = nil;
|
_miniView = nil;
|
||||||
}
|
}
|
||||||
@@ -204,6 +207,7 @@
|
|||||||
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;
|
||||||
[navagationController pushViewController:self.roomVC animated:YES];
|
[navagationController pushViewController:self.roomVC animated:YES];
|
||||||
}
|
}
|
||||||
@@ -212,29 +216,62 @@
|
|||||||
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.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];
|
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
|
||||||
|
// 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]) {
|
||||||
[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;
|
||||||
|
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
|
||||||
[navagationController pushViewController:self.roomVC animated: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) {
|
||||||
|
weakSelf.isClickJoinRoom = NO;
|
||||||
|
showToast(msg);
|
||||||
|
// hideLoadingInView(KEYWINDOW)
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (QXGlobal.shareGlobal.taskModel != nil) {
|
if (QXGlobal.shareGlobal.taskModel != nil) {
|
||||||
@@ -255,18 +292,21 @@
|
|||||||
|
|
||||||
|
|
||||||
-(void)quitRoomWithRoomId:(NSString *)roomId{
|
-(void)quitRoomWithRoomId:(NSString *)roomId{
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = NO;
|
||||||
/// 移除特效
|
/// 移除特效
|
||||||
[[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];
|
||||||
if (_roomVC) {
|
if (_roomVC) {
|
||||||
|
/// 回收麦位视图内存
|
||||||
[_roomVC.seatContentView destroyViews];
|
[_roomVC.seatContentView destroyViews];
|
||||||
|
/// 回收控制器内存
|
||||||
[_roomVC destroyViews];
|
[_roomVC destroyViews];
|
||||||
}
|
}
|
||||||
self.roomId = nil;
|
self.roomId = nil;
|
||||||
@@ -287,6 +327,7 @@
|
|||||||
self.miniView.roomId = self.roomId;
|
self.miniView.roomId = self.roomId;
|
||||||
self.miniView.roomCoverImage = roomCover;
|
self.miniView.roomCoverImage = roomCover;
|
||||||
[self.miniView show];
|
[self.miniView show];
|
||||||
|
[[QXGiftPlayerManager shareManager] stopPlay];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(QXMiniRoomView *)miniView{
|
-(QXMiniRoomView *)miniView{
|
||||||
|
|||||||
@@ -175,6 +175,7 @@
|
|||||||
[self.ktvAmcc destroyMusicPlayer:_ktvPlayer];
|
[self.ktvAmcc destroyMusicPlayer:_ktvPlayer];
|
||||||
_ktvPlayer = nil;
|
_ktvPlayer = nil;
|
||||||
[self.ktvAmcc registerEventDelegate:nil];
|
[self.ktvAmcc registerEventDelegate:nil];
|
||||||
|
[AgoraMusicContentCenter destroy];
|
||||||
self.ktvAmcc = nil;
|
self.ktvAmcc = nil;
|
||||||
self.isOpenMic = NO;
|
self.isOpenMic = NO;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
- (void)sessionManager:(MQTTSessionManager *)sessionManager didReceiveMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained{
|
- (void)sessionManager:(MQTTSessionManager *)sessionManager didReceiveMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained{
|
||||||
|
NSString *localPassword = [[NSUserDefaults standardUserDefaults] objectForKey:kChirldLocalPassword];
|
||||||
|
if ([localPassword isExist]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
NSError *error;
|
NSError *error;
|
||||||
NSString *dataStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
|
NSString *dataStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
|
||||||
dataStr = [dataStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"u_u"];
|
dataStr = [dataStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"u_u"];
|
||||||
|
|||||||
@@ -173,6 +173,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
-(void)roomClearCharm;
|
-(void)roomClearCharm;
|
||||||
/// 收到礼物
|
/// 收到礼物
|
||||||
-(void)didRecieveGiftWithWithUserInfo:(QXUserHomeModel*)userInfo;
|
-(void)didRecieveGiftWithWithUserInfo:(QXUserHomeModel*)userInfo;
|
||||||
|
/// 收到多条礼物
|
||||||
|
-(void)didRecieveGiftWithWithUserInfos:(NSArray<QXUserHomeModel*>*)userInfos;
|
||||||
/// 用户禁言禁麦状态发生变化
|
/// 用户禁言禁麦状态发生变化
|
||||||
-(void)userMuteStatusDidChanged:(QXUserHomeModel*)userInfo isMute:(NSString*)isMute isMutePit:(NSString*)isMutePit;
|
-(void)userMuteStatusDidChanged:(QXUserHomeModel*)userInfo isMute:(NSString*)isMute isMutePit:(NSString*)isMutePit;
|
||||||
/// 麦位状态发生变化
|
/// 麦位状态发生变化
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
-(void)joinGroupWithRoomId:(NSString *)roomId{
|
-(void)joinGroupWithRoomId:(NSString *)roomId{
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
if (self.groupId) {
|
if (self.groupId) {
|
||||||
[self quitGroupWithRoomId:roomId];
|
[self quitGroupWithRoomId:self.groupId];
|
||||||
}
|
}
|
||||||
[[V2TIMManager sharedInstance] addGroupListener:self];
|
[[V2TIMManager sharedInstance] addGroupListener:self];
|
||||||
[[V2TIMManager sharedInstance] addSimpleMsgListener:self];
|
[[V2TIMManager sharedInstance] addSimpleMsgListener:self];
|
||||||
@@ -122,9 +122,17 @@
|
|||||||
/// 收到礼物
|
/// 收到礼物
|
||||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||||
model.messageType = QXRoomChatMessageTypeGift;
|
model.messageType = QXRoomChatMessageTypeGift;
|
||||||
[[QXGiftPlayerManager shareManager] displayFullEffectView:model.GiftInfo.play_image];
|
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
|
||||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfo:)]) {
|
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
|
||||||
[self.delegate didRecieveGiftWithWithUserInfo:model.ToUserInfo];
|
|
||||||
|
if (model.ToUserInfos.count>0) {
|
||||||
|
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfos:)]) {
|
||||||
|
[self.delegate didRecieveGiftWithWithUserInfos:model.ToUserInfos];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfo:)]) {
|
||||||
|
[self.delegate didRecieveGiftWithWithUserInfo:model.ToUserInfo];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (model.text.length == 0) {
|
if (model.text.length == 0) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -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{
|
||||||
|
|||||||
@@ -51,6 +51,9 @@
|
|||||||
@property (nonatomic,strong)NSString *giftCount;
|
@property (nonatomic,strong)NSString *giftCount;
|
||||||
|
|
||||||
@property (nonatomic,strong)QXSendGiftCollectionView *bagGiftView;
|
@property (nonatomic,strong)QXSendGiftCollectionView *bagGiftView;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)NSString *giftBagPrice;
|
||||||
|
@property (nonatomic,strong)NSString *coin;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation QXSendGiftView
|
@implementation QXSendGiftView
|
||||||
@@ -353,7 +356,7 @@
|
|||||||
}
|
}
|
||||||
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
|
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
[QXMineNetwork roomBagGiftClearWithRoomId:self.roomId userId:userId heartId:self.heartId successBlock:^(NSDictionary * _Nonnull dict) {
|
[QXMineNetwork roomBagGiftClearWithRoomId:self.roomId userId:userId heartId:self.heartId auction_id:self.auctionId successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
[weakSelf hide];
|
[weakSelf hide];
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
showToast(msg);
|
showToast(msg);
|
||||||
@@ -514,10 +517,12 @@
|
|||||||
[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];
|
if (self.type != QXSendGiftViewTypeFind) {
|
||||||
md.name = @"背包";
|
QXGiftLabelModel *md = [[QXGiftLabelModel alloc] init];
|
||||||
md.id = @"-10";
|
md.name = @"背包";
|
||||||
[weakSelf.titles insertObject:md atIndex:0];
|
md.id = @"-10";
|
||||||
|
[weakSelf.titles insertObject:md atIndex:0];
|
||||||
|
}
|
||||||
NSMutableArray *arr = [NSMutableArray array];
|
NSMutableArray *arr = [NSMutableArray array];
|
||||||
for (QXGiftLabelModel*md in weakSelf.titles) {
|
for (QXGiftLabelModel*md in weakSelf.titles) {
|
||||||
[arr addObject:md.name];
|
[arr addObject:md.name];
|
||||||
@@ -537,10 +542,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) {
|
||||||
|
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -553,8 +565,12 @@
|
|||||||
// }
|
// }
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
self.sendAllBtn.hidden = NO;
|
self.sendAllBtn.hidden = NO;
|
||||||
|
self.cornLabel.text = self.giftBagPrice;
|
||||||
|
self.rechargeBtn.hidden = YES;
|
||||||
}else{
|
}else{
|
||||||
|
self.cornLabel.text = self.coin;
|
||||||
self.sendAllBtn.hidden = YES;
|
self.sendAllBtn.hidden = YES;
|
||||||
|
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
|
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
|
||||||
@@ -1099,10 +1115,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) {
|
||||||
@@ -1114,9 +1133,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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -81,6 +81,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);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
|
|
||||||
@interface QXHomeViewController : QXBaseViewController
|
@interface QXHomeViewController : QXBaseViewController
|
||||||
-(void)giftScrollViewShowWithModel:(QXGiftScrollModel*)model;
|
-(void)giftScrollViewShowWithModel:(QXGiftScrollModel*)model;
|
||||||
|
-(void)giftScrollViewShowWithModelList:(NSArray<QXGiftScrollModel*>*)list;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -252,6 +252,17 @@
|
|||||||
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];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
/// 是否为最小化房间进来
|
/// 是否为最小化房间进来
|
||||||
@property (nonatomic,assign)BOOL isReJoin;
|
@property (nonatomic,assign)BOOL isReJoin;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)QXRoomModel* roomModel;
|
||||||
/// 麦位视图
|
/// 麦位视图
|
||||||
@property (nonatomic,strong)QXRoomSeatView *seatContentView;
|
@property (nonatomic,strong)QXRoomSeatView *seatContentView;
|
||||||
/// 聊天列表
|
/// 聊天列表
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ QXRoomUserInfoViewDelegate
|
|||||||
/// 排麦按钮
|
/// 排麦按钮
|
||||||
@property (nonatomic,strong)QXUpSeatCountView *micTeamView;
|
@property (nonatomic,strong)QXUpSeatCountView *micTeamView;
|
||||||
|
|
||||||
@property (nonatomic,strong)QXRoomModel* roomModel;
|
|
||||||
/// 礼物特效
|
/// 礼物特效
|
||||||
@property (nonatomic,strong)UIView *bgEffectView;
|
@property (nonatomic,strong)UIView *bgEffectView;
|
||||||
/// 设置
|
/// 设置
|
||||||
@@ -84,7 +83,6 @@ QXRoomUserInfoViewDelegate
|
|||||||
-(void)viewWillAppear:(BOOL)animated{
|
-(void)viewWillAppear:(BOOL)animated{
|
||||||
[super viewWillAppear:animated];
|
[super viewWillAppear:animated];
|
||||||
[self.navigationController setNavigationBarHidden:YES animated:YES];
|
[self.navigationController setNavigationBarHidden:YES animated:YES];
|
||||||
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
|
||||||
}
|
}
|
||||||
-(void)viewDidAppear:(BOOL)animated{
|
-(void)viewDidAppear:(BOOL)animated{
|
||||||
[super viewDidAppear:animated];
|
[super viewDidAppear:animated];
|
||||||
@@ -107,8 +105,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
}
|
}
|
||||||
-(void)viewDidDisappear:(BOOL)animated{
|
-(void)viewDidDisappear:(BOOL)animated{
|
||||||
[super viewDidDisappear:animated];
|
[super viewDidDisappear:animated];
|
||||||
[UIApplication sharedApplication].idleTimerDisabled = NO;
|
// [[QXGiftPlayerManager shareManager] stopPlay];
|
||||||
[[QXGiftPlayerManager shareManager] stopPlay];
|
|
||||||
self.continuousView.hidden = YES;
|
self.continuousView.hidden = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,27 +215,14 @@ QXRoomUserInfoViewDelegate
|
|||||||
BOOL isClose = [[NSUserDefaults standardUserDefaults] boolForKey:kEffectsCLose];
|
BOOL isClose = [[NSUserDefaults standardUserDefaults] boolForKey:kEffectsCLose];
|
||||||
[[QXGiftPlayerManager shareManager] openOrCloseEffectViewWith:!isClose];
|
[[QXGiftPlayerManager shareManager] openOrCloseEffectViewWith:!isClose];
|
||||||
}
|
}
|
||||||
#pragma mark - 获取房间信息
|
-(void)setRoomModel:(QXRoomModel *)roomModel{
|
||||||
-(void)joinRoom{
|
_roomModel = roomModel;
|
||||||
|
}
|
||||||
|
-(void)setRoomId:(NSString *)roomId{
|
||||||
|
_roomId = roomId;
|
||||||
[self.chatListView insertNoitce];
|
[self.chatListView insertNoitce];
|
||||||
[[QXRoomMessageManager shared] joinGroupWithRoomId:self.roomId];
|
[[QXRoomMessageManager shared] joinGroupWithRoomId:self.roomId];
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
[QXMineNetwork joinRoomWithRoomId:self.roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
|
|
||||||
// roomModel.room_info.pk_room_id = @"33";
|
|
||||||
weakSelf.roomModel = roomModel;
|
|
||||||
[weakSelf resetSubviews];
|
|
||||||
[weakSelf configRoomDataIsJoin:YES];
|
|
||||||
|
|
||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
|
||||||
showToast(msg);
|
|
||||||
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
|
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
||||||
[weakSelf.navigationController popViewControllerAnimated:YES];
|
|
||||||
});
|
|
||||||
|
|
||||||
}];
|
|
||||||
|
|
||||||
|
|
||||||
[QXMineNetwork roomOnlineListWithRoomId:self.roomId page:1 successBlock:^(NSArray<QXRoomUserInfoModel *> * _Nonnull onPitList, NSArray<QXRoomUserInfoModel *> * _Nonnull offPitList) {
|
[QXMineNetwork roomOnlineListWithRoomId:self.roomId page:1 successBlock:^(NSArray<QXRoomUserInfoModel *> * _Nonnull onPitList, NSArray<QXRoomUserInfoModel *> * _Nonnull offPitList) {
|
||||||
NSMutableArray *arr = [NSMutableArray arrayWithArray:onPitList];
|
NSMutableArray *arr = [NSMutableArray arrayWithArray:onPitList];
|
||||||
[arr addObjectsFromArray:offPitList];
|
[arr addObjectsFromArray:offPitList];
|
||||||
@@ -246,6 +230,27 @@ QXRoomUserInfoViewDelegate
|
|||||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
}
|
||||||
|
#pragma mark - 获取房间信息
|
||||||
|
-(void)joinRoom{
|
||||||
|
|
||||||
|
[self resetSubviews];
|
||||||
|
[self configRoomDataIsJoin:YES];
|
||||||
|
// [QXMineNetwork joinRoomWithRoomId:self.roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
|
||||||
|
//// roomModel.room_info.pk_room_id = @"33";
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||||
|
// showToast(msg);
|
||||||
|
// [[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
|
||||||
|
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||||
|
// [weakSelf.navigationController popViewControllerAnimated:YES];
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// }];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
-(void)getUserOnlineStatusWithUserIds:(NSString*)userIds{
|
-(void)getUserOnlineStatusWithUserIds:(NSString*)userIds{
|
||||||
[QXMineNetwork roomUserOnlineStatusWithUserIds:userIds roomId:self.roomId successBlock:^(NSArray<QXUserModel *> * _Nonnull list) {
|
[QXMineNetwork roomUserOnlineStatusWithUserIds:userIds roomId:self.roomId successBlock:^(NSArray<QXUserModel *> * _Nonnull list) {
|
||||||
@@ -283,7 +288,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
}else{
|
}else{
|
||||||
self.roomBgImageView.image = [UIImage imageNamed:@"cp_room_bg"];
|
self.roomBgImageView.image = [UIImage imageNamed:@"cp_room_bg"];
|
||||||
}
|
}
|
||||||
if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) {
|
if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) {
|
||||||
// 点唱房
|
// 点唱房
|
||||||
if (self.roomModel.room_info.label_id.intValue == 1) {
|
if (self.roomModel.room_info.label_id.intValue == 1) {
|
||||||
|
|
||||||
@@ -414,7 +419,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.seatContentView.roomModel = self.roomModel;
|
self.seatContentView.roomModel = self.roomModel;
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2){
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 2){
|
||||||
/// k歌房没有背景音乐
|
/// k歌房没有背景音乐
|
||||||
[QXAgoraEngine sharedEngine].isPlayBgMusic = NO;
|
[QXAgoraEngine sharedEngine].isPlayBgMusic = NO;
|
||||||
}else{
|
}else{
|
||||||
@@ -439,7 +444,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
if (isJoin) {
|
if (isJoin) {
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
[[QXAgoraEngine sharedEngine] joinChannel:self.roomId withRoom:self agora_token:self.roomModel.user_info.agora_token agora_rtm_token:self.roomModel.user_info.agora_rtm_token isUpSeat:self.seatContentView.myPitNumber>0 successBock:^{
|
[[QXAgoraEngine sharedEngine] joinChannel:self.roomId withRoom:self agora_token:self.roomModel.user_info.agora_token agora_rtm_token:self.roomModel.user_info.agora_rtm_token isUpSeat:self.seatContentView.myPitNumber>0 successBock:^{
|
||||||
if (weakSelf.roomModel.song_user_info && (weakSelf.roomModel.room_info.type_id.intValue == 1 || weakSelf.roomModel.room_info.type_id.intValue == 3 || weakSelf.roomModel.room_info.type_id.intValue == 4) && weakSelf.roomModel.room_info.label_id.intValue == 2) {
|
if (weakSelf.roomModel.song_user_info && (weakSelf.roomModel.room_info.type_id.intValue == 1 || weakSelf.roomModel.room_info.type_id.intValue == 3 || weakSelf.roomModel.room_info.type_id.intValue == 4 || weakSelf.roomModel.room_info.type_id.intValue == 8) && weakSelf.roomModel.room_info.label_id.intValue == 2) {
|
||||||
if ([weakSelf.roomModel.song_user_info.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
if ([weakSelf.roomModel.song_user_info.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||||
// [[QXAgoraEngine sharedEngine] ktv_EndSing];
|
// [[QXAgoraEngine sharedEngine] ktv_EndSing];
|
||||||
// [[QXAgoraEngine sharedEngine] ktv_StartSing:YES withSong:weakSelf.roomModel.song_user_info];
|
// [[QXAgoraEngine sharedEngine] ktv_StartSing:YES withSong:weakSelf.roomModel.song_user_info];
|
||||||
@@ -477,7 +482,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
if (self.roomModel.song_user_info && (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2) {
|
if (self.roomModel.song_user_info && (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 2) {
|
||||||
if ([self.roomModel.song_user_info.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
if ([self.roomModel.song_user_info.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||||
self.seatContentView.songInfo = self.roomModel.song_user_info;
|
self.seatContentView.songInfo = self.roomModel.song_user_info;
|
||||||
self.seatContentView.nextInfo = self.roomModel.nextInfo;
|
self.seatContentView.nextInfo = self.roomModel.nextInfo;
|
||||||
@@ -491,7 +496,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
[QXAgoraEngine sharedEngine].delegate = self;
|
[QXAgoraEngine sharedEngine].delegate = self;
|
||||||
|
|
||||||
|
|
||||||
if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) {
|
if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) {
|
||||||
// 点唱房
|
// 点唱房
|
||||||
if (self.roomModel.room_info.label_id.intValue == 1) {
|
if (self.roomModel.room_info.label_id.intValue == 1) {
|
||||||
if (self.roomModel.pk_info.pk_id.intValue>0) {
|
if (self.roomModel.pk_info.pk_id.intValue>0) {
|
||||||
@@ -534,11 +539,11 @@ QXRoomUserInfoViewDelegate
|
|||||||
}
|
}
|
||||||
self.bottomView.roomModel = self.roomModel;
|
self.bottomView.roomModel = self.roomModel;
|
||||||
BOOL hasPK = NO;
|
BOOL hasPK = NO;
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 1) {
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 1) {
|
||||||
hasPK = YES;
|
hasPK = YES;
|
||||||
}
|
}
|
||||||
BOOL hasSong = NO;
|
BOOL hasSong = NO;
|
||||||
if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4){
|
if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8){
|
||||||
hasSong = YES;
|
hasSong = YES;
|
||||||
}
|
}
|
||||||
/// 暂时不要pk
|
/// 暂时不要pk
|
||||||
@@ -634,7 +639,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
}
|
}
|
||||||
// 演唱者歌曲播放回调
|
// 演唱者歌曲播放回调
|
||||||
-(void)rtcEngineSongProgress:(NSUInteger)progress{
|
-(void)rtcEngineSongProgress:(NSUInteger)progress{
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2) {
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 2) {
|
||||||
self.seatContentView.progress = progress;
|
self.seatContentView.progress = progress;
|
||||||
}else{
|
}else{
|
||||||
self.musicView.progress = progress;
|
self.musicView.progress = progress;
|
||||||
@@ -782,6 +787,9 @@ QXRoomUserInfoViewDelegate
|
|||||||
-(void)didRecieveGiftWithWithUserInfo:(QXUserHomeModel *)userInfo{
|
-(void)didRecieveGiftWithWithUserInfo:(QXUserHomeModel *)userInfo{
|
||||||
[self.seatContentView setSeatCharmWithUser:userInfo];
|
[self.seatContentView setSeatCharmWithUser:userInfo];
|
||||||
}
|
}
|
||||||
|
-(void)didRecieveGiftWithWithUserInfos:(NSArray<QXUserHomeModel *> *)userInfos{
|
||||||
|
[self.seatContentView setSeatCharmWithUsers:userInfos];
|
||||||
|
}
|
||||||
/// 拍卖者上麦
|
/// 拍卖者上麦
|
||||||
-(void)auctionUpSeatWithUserInfo:(QXUserHomeModel *)userInfo isUpSeat:(BOOL)isUpSeat{
|
-(void)auctionUpSeatWithUserInfo:(QXUserHomeModel *)userInfo isUpSeat:(BOOL)isUpSeat{
|
||||||
[self.seatContentView didAuctiontUpDownSeatWithUser:userInfo isUpSeat:isUpSeat];
|
[self.seatContentView didAuctiontUpDownSeatWithUser:userInfo isUpSeat:isUpSeat];
|
||||||
@@ -1065,6 +1073,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
-(void)recieveHeadline:(QXHeadLineModel *)headline{
|
-(void)recieveHeadline:(QXHeadLineModel *)headline{
|
||||||
if (_headlineView) {
|
if (_headlineView) {
|
||||||
self.headlineView.model = headline;
|
self.headlineView.model = headline;
|
||||||
|
[self.view addSubview:self.headlineView];
|
||||||
}else{
|
}else{
|
||||||
self.headlineView.model = headline;
|
self.headlineView.model = headline;
|
||||||
[self.view addSubview:self.headlineView];
|
[self.view addSubview:self.headlineView];
|
||||||
@@ -1083,7 +1092,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
case QXRoomBottomViewEventTypeMuteAudio:{
|
case QXRoomBottomViewEventTypeMuteAudio:{
|
||||||
if (!isSelected) {
|
if (!isSelected) {
|
||||||
/// 静音时麦圈停止
|
/// 静音时麦圈停止
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 1) {
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 1) {
|
||||||
// QXRoomSeatContentView *seatContentView = self.seatContentView.normalSeatView.mySeatView;
|
// QXRoomSeatContentView *seatContentView = self.seatContentView.normalSeatView.mySeatView;
|
||||||
// if (seatContentView.isSeatSpeaking) {
|
// if (seatContentView.isSeatSpeaking) {
|
||||||
// [seatContentView stopAudioAnimation];
|
// [seatContentView stopAudioAnimation];
|
||||||
@@ -1164,7 +1173,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case QXRoomBottomViewEventTypeMusic:{
|
case QXRoomBottomViewEventTypeMusic:{
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 1){
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 1){
|
||||||
MJWeakSelf
|
MJWeakSelf
|
||||||
QXAlertView *al = [[QXAlertView alloc] initWithFrame:CGRectMake(0, 0, ScaleWidth(300), ScaleWidth(175))];
|
QXAlertView *al = [[QXAlertView alloc] initWithFrame:CGRectMake(0, 0, ScaleWidth(300), ScaleWidth(175))];
|
||||||
al.type = QXAlertViewTypeApplySong;
|
al.type = QXAlertViewTypeApplySong;
|
||||||
@@ -1198,14 +1207,17 @@ QXRoomUserInfoViewDelegate
|
|||||||
if (self.roomModel.room_info.pit_list.count == 10) {
|
if (self.roomModel.room_info.pit_list.count == 10) {
|
||||||
QXRoomPitModel *md = self.roomModel.room_info.pit_list[8];
|
QXRoomPitModel *md = self.roomModel.room_info.pit_list[8];
|
||||||
if (md.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:md.user_id]) {
|
if (md.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:md.user_id]) {
|
||||||
|
md.isSelected = NO;
|
||||||
[pitArr addObject:md];
|
[pitArr addObject:md];
|
||||||
QXRoomPitModel *lastMd = self.roomModel.room_info.pit_list[9];
|
QXRoomPitModel *lastMd = self.roomModel.room_info.pit_list[9];
|
||||||
if (lastMd.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:lastMd.user_id]) {
|
if (lastMd.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:lastMd.user_id]) {
|
||||||
|
lastMd.isSelected = NO;
|
||||||
[pitArr addObject:lastMd];
|
[pitArr addObject:lastMd];
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
QXRoomPitModel *lastMd = self.roomModel.room_info.pit_list[9];
|
QXRoomPitModel *lastMd = self.roomModel.room_info.pit_list[9];
|
||||||
if (lastMd.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:lastMd.user_id]) {
|
if (lastMd.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:lastMd.user_id]) {
|
||||||
|
lastMd.isSelected = NO;
|
||||||
[pitArr addObject:lastMd];
|
[pitArr addObject:lastMd];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1261,6 +1273,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
md.user_id = self.roomModel.song_user_info.user_id;
|
md.user_id = self.roomModel.song_user_info.user_id;
|
||||||
md.avatar = self.roomModel.song_user_info.avatar;
|
md.avatar = self.roomModel.song_user_info.avatar;
|
||||||
md.pit_number = @"9999";
|
md.pit_number = @"9999";
|
||||||
|
md.isSelected = NO;
|
||||||
[pitArr addObject:md];
|
[pitArr addObject:md];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1270,6 +1283,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (md.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:md.user_id]) {
|
if (md.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:md.user_id]) {
|
||||||
|
md.isSelected = NO;
|
||||||
[pitArr addObject:md];
|
[pitArr addObject:md];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1282,6 +1296,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
md.user_id = self.roomModel.room_auction.auction_user.user_id;
|
md.user_id = self.roomModel.room_auction.auction_user.user_id;
|
||||||
md.avatar = self.roomModel.room_auction.auction_user.avatar;
|
md.avatar = self.roomModel.room_auction.auction_user.avatar;
|
||||||
md.pit_number = @"9999";
|
md.pit_number = @"9999";
|
||||||
|
md.isSelected = NO;
|
||||||
[pitArr addObject:md];
|
[pitArr addObject:md];
|
||||||
}
|
}
|
||||||
if (self.roomModel.room_auction.auction_list.count > 0) {
|
if (self.roomModel.room_auction.auction_list.count > 0) {
|
||||||
@@ -1290,6 +1305,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (md.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:md.user_id]) {
|
if (md.user_id.longValue > 0 && ![QXGlobal.shareGlobal.loginModel.user_id isEqualToString:md.user_id]) {
|
||||||
|
md.isSelected = NO;
|
||||||
[pitArr addObject:md];
|
[pitArr addObject:md];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
[self addSubview:self.closeBtn];
|
[self addSubview:self.closeBtn];
|
||||||
}
|
}
|
||||||
-(void)show{
|
-(void)show{
|
||||||
[KEYWINDOW.rootViewController.view addSubview:self];
|
[UIApplication.sharedApplication.keyWindow.rootViewController.view addSubview:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setRoomCoverImage:(NSString *)roomCoverImage{
|
-(void)setRoomCoverImage:(NSString *)roomCoverImage{
|
||||||
|
|||||||
@@ -74,6 +74,8 @@ typedef NS_ENUM(NSInteger) {
|
|||||||
@property (nonatomic,strong)QXUserHomeModel* FromUserInfo;
|
@property (nonatomic,strong)QXUserHomeModel* FromUserInfo;
|
||||||
@property (nonatomic,strong)QXUserHomeModel* ToUserInfo;
|
@property (nonatomic,strong)QXUserHomeModel* ToUserInfo;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)NSArray<QXUserHomeModel* >* ToUserInfos;
|
||||||
|
|
||||||
/// 当前音乐
|
/// 当前音乐
|
||||||
@property (nonatomic,strong)QXSongListModel* songInfo;
|
@property (nonatomic,strong)QXSongListModel* songInfo;
|
||||||
/// 下一首音乐
|
/// 下一首音乐
|
||||||
|
|||||||
@@ -346,7 +346,18 @@ NSInteger maxMessageCount = 20;
|
|||||||
|
|
||||||
-(void)setMessage:(QXRoomChatListModel *)message{
|
-(void)setMessage:(QXRoomChatListModel *)message{
|
||||||
_message = message;
|
_message = message;
|
||||||
self.titleLabel.text = message.text;
|
// self.titleLabel.text = message.text;
|
||||||
|
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:message.text];
|
||||||
|
if ([message.FromUserInfo.nickname isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.FromUserInfo.nickname]];
|
||||||
|
}
|
||||||
|
if ([message.ToUserInfo.nickname isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.ToUserInfo.nickname]];
|
||||||
|
}
|
||||||
|
if ([message.GiftInfo.gift_name isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0x00C8FF) range:[message.text rangeOfString:message.GiftInfo.gift_name]];
|
||||||
|
}
|
||||||
|
self.titleLabel.attributedText = attr;
|
||||||
self.nameLabel.text = message.FromUserInfo.nickname;
|
self.nameLabel.text = message.FromUserInfo.nickname;
|
||||||
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:message.FromUserInfo.avatar]];
|
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:message.FromUserInfo.avatar]];
|
||||||
self.iconBgView.hidden = YES;
|
self.iconBgView.hidden = YES;
|
||||||
@@ -416,7 +427,7 @@ NSInteger maxMessageCount = 20;
|
|||||||
// UIImage *image = [UIImage imageWithContentsOfFile:path];
|
// UIImage *image = [UIImage imageWithContentsOfFile:path];
|
||||||
// image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(20, 40, 20 , 40) resizingMode:(UIImageResizingModeStretch)];
|
// image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(20, 40, 20 , 40) resizingMode:(UIImageResizingModeStretch)];
|
||||||
// self.bubbleImageView.image = image;
|
// self.bubbleImageView.image = image;
|
||||||
self.bubbleImageView.backgroundColor = RGB16A(0x000000, 0.4);
|
self.bubbleImageView.backgroundColor = RGB16A(0xFFFFFF, 0.2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -466,7 +477,7 @@ NSInteger maxMessageCount = 20;
|
|||||||
if (!self.message.havBubble) {
|
if (!self.message.havBubble) {
|
||||||
[self.bubbleImageView sd_cancelLatestImageLoad];
|
[self.bubbleImageView sd_cancelLatestImageLoad];
|
||||||
self.bubbleImageView.image = nil;
|
self.bubbleImageView.image = nil;
|
||||||
self.bubbleImageView.backgroundColor = RGB16A(0x000000, 0.4);
|
self.bubbleImageView.backgroundColor = RGB16A(0xFFFFFF, 0.2);
|
||||||
[self.bubbleImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
[self.bubbleImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.left.equalTo(self.titleLabel).offset(-8);
|
make.left.equalTo(self.titleLabel).offset(-8);
|
||||||
make.top.equalTo(self.titleLabel).offset(-6);
|
make.top.equalTo(self.titleLabel).offset(-6);
|
||||||
@@ -525,7 +536,7 @@ NSInteger maxMessageCount = 20;
|
|||||||
[self initSubviews];
|
[self initSubviews];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)headerAction{
|
-(void)headerAction{
|
||||||
if (self.delegate && [self.delegate respondsToSelector:@selector(previewUserInfoWithUserId:)]) {
|
if (self.delegate && [self.delegate respondsToSelector:@selector(previewUserInfoWithUserId:)]) {
|
||||||
@@ -535,7 +546,18 @@ NSInteger maxMessageCount = 20;
|
|||||||
|
|
||||||
-(void)setMessage:(QXRoomChatListModel *)message{
|
-(void)setMessage:(QXRoomChatListModel *)message{
|
||||||
_message = message;
|
_message = message;
|
||||||
self.titleLabel.text = message.text;
|
// self.titleLabel.text = message.text;
|
||||||
|
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:message.text];
|
||||||
|
if ([message.FromUserInfo.nickname isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.FromUserInfo.nickname]];
|
||||||
|
}
|
||||||
|
if ([message.ToUserInfo.nickname isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.ToUserInfo.nickname]];
|
||||||
|
}
|
||||||
|
if ([message.GiftInfo.gift_name isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0x00C8FF) range:[message.text rangeOfString:message.GiftInfo.gift_name]];
|
||||||
|
}
|
||||||
|
self.titleLabel.attributedText = attr;
|
||||||
self.nameLabel.text = message.FromUserInfo.nickname;
|
self.nameLabel.text = message.FromUserInfo.nickname;
|
||||||
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:message.FromUserInfo.avatar]];
|
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:message.FromUserInfo.avatar]];
|
||||||
self.iconBgView.hidden = YES;
|
self.iconBgView.hidden = YES;
|
||||||
@@ -604,7 +626,7 @@ NSInteger maxMessageCount = 20;
|
|||||||
// UIImage *image = [UIImage imageWithContentsOfFile:path];
|
// UIImage *image = [UIImage imageWithContentsOfFile:path];
|
||||||
// image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(20, 40, 20 , 40) resizingMode:(UIImageResizingModeStretch)];
|
// image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(20, 40, 20 , 40) resizingMode:(UIImageResizingModeStretch)];
|
||||||
// self.bubbleImageView.image = image;
|
// self.bubbleImageView.image = image;
|
||||||
self.bubbleImageView.backgroundColor = RGB16A(0x000000, 0.4);
|
self.bubbleImageView.backgroundColor = RGB16A(0xFFFFFF, 0.2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -654,7 +676,7 @@ NSInteger maxMessageCount = 20;
|
|||||||
if (!self.message.havBubble) {
|
if (!self.message.havBubble) {
|
||||||
[self.bubbleImageView sd_cancelLatestImageLoad];
|
[self.bubbleImageView sd_cancelLatestImageLoad];
|
||||||
self.bubbleImageView.image = nil;
|
self.bubbleImageView.image = nil;
|
||||||
self.bubbleImageView.backgroundColor = RGB16A(0x000000, 0.4);
|
self.bubbleImageView.backgroundColor = RGB16A(0xFFFFFF, 0.2);
|
||||||
[self.bubbleImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
[self.bubbleImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.left.equalTo(self.titleLabel).offset(-8);
|
make.left.equalTo(self.titleLabel).offset(-8);
|
||||||
make.top.equalTo(self.titleLabel).offset(-6);
|
make.top.equalTo(self.titleLabel).offset(-6);
|
||||||
@@ -718,12 +740,32 @@ NSInteger maxMessageCount = 20;
|
|||||||
|
|
||||||
-(void)setMessage:(QXRoomChatListModel *)message{
|
-(void)setMessage:(QXRoomChatListModel *)message{
|
||||||
_message = message;
|
_message = message;
|
||||||
self.titleLabel.text = message.text;
|
// NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:message.text];
|
||||||
|
// if ([message.FromUserInfo.nickname isExist]) {
|
||||||
|
// [attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.FromUserInfo.nickname]];
|
||||||
|
// }
|
||||||
|
// if ([message.ToUserInfo.nickname isExist]) {
|
||||||
|
// [attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.ToUserInfo.nickname]];
|
||||||
|
// }
|
||||||
|
//// self.titleLabel.text = message.text;
|
||||||
|
// self.titleLabel.attributedText = attr;
|
||||||
|
|
||||||
|
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:message.text];
|
||||||
|
if ([message.FromUserInfo.nickname isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.FromUserInfo.nickname]];
|
||||||
|
}
|
||||||
|
if ([message.ToUserInfo.nickname isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0xFFE309) range:[message.text rangeOfString:message.ToUserInfo.nickname]];
|
||||||
|
}
|
||||||
|
if ([message.GiftInfo.gift_name isExist]) {
|
||||||
|
[attr yy_setColor:RGB16(0x00C8FF) range:[message.text rangeOfString:message.GiftInfo.gift_name]];
|
||||||
|
}
|
||||||
|
self.titleLabel.attributedText = attr;
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)initSubviews{
|
-(void)initSubviews{
|
||||||
self.bgView = [[UIView alloc] init];
|
self.bgView = [[UIView alloc] init];
|
||||||
self.bgView.backgroundColor = RGB16A(0x000000, 0.4);
|
self.bgView.backgroundColor = RGB16A(0xFFFFFF, 0.2);
|
||||||
[self.bgView addRoundedCornersWithRadius:6];
|
[self.bgView addRoundedCornersWithRadius:6];
|
||||||
[self.contentView addSubview:self.bgView];
|
[self.contentView addSubview:self.bgView];
|
||||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
@@ -734,8 +776,8 @@ NSInteger maxMessageCount = 20;
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
self.titleLabel = [[UILabel alloc] init];
|
self.titleLabel = [[UILabel alloc] init];
|
||||||
self.titleLabel.textColor = RGB16(0XD1A9FE);
|
// self.titleLabel.textColor = RGB16(0XD1A9FE);
|
||||||
// self.titleLabel.textColor = QXConfig.themeColor;
|
self.titleLabel.textColor = UIColor.whiteColor;
|
||||||
self.titleLabel.font = [UIFont systemFontOfSize:14];
|
self.titleLabel.font = [UIFont systemFontOfSize:14];
|
||||||
self.titleLabel.numberOfLines = 0;
|
self.titleLabel.numberOfLines = 0;
|
||||||
[self.bgView addSubview:self.titleLabel];
|
[self.bgView addSubview:self.titleLabel];
|
||||||
@@ -756,6 +798,8 @@ NSInteger maxMessageCount = 20;
|
|||||||
@"FromUserInfo":@"QXUserHomeModel",
|
@"FromUserInfo":@"QXUserHomeModel",
|
||||||
@"nextInfo":@"QXSongListModel",
|
@"nextInfo":@"QXSongListModel",
|
||||||
@"songInfo":@"QXSongListModel",
|
@"songInfo":@"QXSongListModel",
|
||||||
|
@"ToUserInfo":@"QXUserHomeModel",
|
||||||
|
@"ToUserInfos":@"QXUserHomeModel",
|
||||||
@"friend_user":@"QXRoomFriendRelationModel"
|
@"friend_user":@"QXRoomFriendRelationModel"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,10 +33,11 @@
|
|||||||
self.endBtn.hidden = YES;
|
self.endBtn.hidden = YES;
|
||||||
}else{
|
}else{
|
||||||
if (self.isCompere) {
|
if (self.isCompere) {
|
||||||
self.endBtn.hidden = YES;
|
self.endBtn.hidden = NO;
|
||||||
[self.endBtn setTitle:isSearch?QXText(@"点歌"):QXText(@"置顶") forState:(UIControlStateNormal)];
|
[self.endBtn setTitle:isSearch?QXText(@"点歌"):QXText(@"置顶") forState:(UIControlStateNormal)];
|
||||||
}else{
|
}else{
|
||||||
self.endBtn.hidden = YES;
|
self.endBtn.hidden = YES;
|
||||||
|
self.upBtn.hidden = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
self.nameLabel.text = model.nickname;
|
self.nameLabel.text = model.nickname;
|
||||||
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
||||||
self.scaleLabel.text = [NSString stringWithFormat:@"%.2f%%",model.ratio.doubleValue];
|
self.scaleLabel.text = [NSString stringWithFormat:@"%.2f%%",model.ratio.doubleValue];
|
||||||
self.priceLabel.text = [NSString stringWithFormat:@"%.4f%%",model.earnings.doubleValue];
|
self.priceLabel.text = [NSString stringWithFormat:@"%.4f",model.earnings.doubleValue];
|
||||||
}
|
}
|
||||||
- (IBAction)setScaleAction:(id)sender {
|
- (IBAction)setScaleAction:(id)sender {
|
||||||
QXDirectSetScaleView *scaleView = [[QXDirectSetScaleView alloc] init];
|
QXDirectSetScaleView *scaleView = [[QXDirectSetScaleView alloc] init];
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#import "QXHeadlineView.h"
|
#import "QXHeadlineView.h"
|
||||||
#import "QXUserHomePageViewController.h"
|
#import "QXUserHomePageViewController.h"
|
||||||
|
#import "QXTimer.h"
|
||||||
|
|
||||||
@interface QXHeadlineView()
|
@interface QXHeadlineView()
|
||||||
|
|
||||||
@@ -23,6 +24,9 @@
|
|||||||
@property (nonatomic,strong)UIButton *trampleBtn;
|
@property (nonatomic,strong)UIButton *trampleBtn;
|
||||||
@property (nonatomic,strong)UIButton *closeBtn;
|
@property (nonatomic,strong)UIButton *closeBtn;
|
||||||
@property (nonatomic,assign)BOOL isSmall;
|
@property (nonatomic,assign)BOOL isSmall;
|
||||||
|
@property (nonatomic,assign)long startTime;
|
||||||
|
|
||||||
|
@property (nonatomic,strong)QXTimer *timer;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation QXHeadlineView
|
@implementation QXHeadlineView
|
||||||
@@ -166,6 +170,7 @@
|
|||||||
self.nameLabel.text = model.nickname;
|
self.nameLabel.text = model.nickname;
|
||||||
[self.headImageView sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
[self.headImageView sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
|
||||||
self.contentLabel.text = model.content;
|
self.contentLabel.text = model.content;
|
||||||
|
[self startTimer];
|
||||||
if (self.isSmall) {
|
if (self.isSmall) {
|
||||||
[UIView animateWithDuration:0.15 animations:^{
|
[UIView animateWithDuration:0.15 animations:^{
|
||||||
// self.headLineBgView.width = self.width-self.iconImageView.right-6;
|
// self.headLineBgView.width = self.width-self.iconImageView.right-6;
|
||||||
@@ -178,8 +183,34 @@
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
-(void)startTimer{
|
||||||
|
MJWeakSelf
|
||||||
|
NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
|
||||||
|
// 将秒转换为毫秒
|
||||||
|
long long milliseconds = (long long)(timeInterval);
|
||||||
|
self.startTime = self.model.end_time.longLongValue - milliseconds;
|
||||||
|
if (self.startTime <= 0) {
|
||||||
|
//时间错误不进行倒计时
|
||||||
|
[self removeFromSuperview];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
[self stopTimer];
|
||||||
|
_timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
weakSelf.startTime--;
|
||||||
|
if (weakSelf.startTime<=0) {
|
||||||
|
[weakSelf stopTimer];
|
||||||
|
[weakSelf removeFromSuperview];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
-(void)stopTimer{
|
||||||
|
if (_timer) {
|
||||||
|
[self->_timer invalidate];
|
||||||
|
self->_timer= nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
-(void)handlePan:(UIPanGestureRecognizer*)recognizer{
|
-(void)handlePan:(UIPanGestureRecognizer*)recognizer{
|
||||||
if (recognizer.state == UIGestureRecognizerStateEnded) {
|
if (recognizer.state == UIGestureRecognizerStateEnded) {
|
||||||
NSLog(@"拖动结束");
|
NSLog(@"拖动结束");
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ typedef NS_ENUM(NSInteger) {
|
|||||||
QXRoomSettingTypeRoomTypeGirl = 13,
|
QXRoomSettingTypeRoomTypeGirl = 13,
|
||||||
/// 交友房
|
/// 交友房
|
||||||
QXRoomSettingTypeRoomTypeFriend = 14,
|
QXRoomSettingTypeRoomTypeFriend = 14,
|
||||||
|
/// 互娱
|
||||||
|
QXRoomSettingTypeRoomTypeFunny = 100,
|
||||||
|
|
||||||
/// 常用工具
|
/// 常用工具
|
||||||
/// 房间补贴
|
/// 房间补贴
|
||||||
|
|||||||
@@ -34,8 +34,11 @@
|
|||||||
@property (nonatomic,strong)QXRoomSettingModel *roomTypeBoy;
|
@property (nonatomic,strong)QXRoomSettingModel *roomTypeBoy;
|
||||||
/// 女神房
|
/// 女神房
|
||||||
@property (nonatomic,strong)QXRoomSettingModel *roomTypeGirl;
|
@property (nonatomic,strong)QXRoomSettingModel *roomTypeGirl;
|
||||||
/// 交友房
|
/// 交友房 以前的交友换成互娱
|
||||||
@property (nonatomic,strong)QXRoomSettingModel *roomTypeFriend;
|
@property (nonatomic,strong)QXRoomSettingModel *roomTypeFriend;
|
||||||
|
/// 互娱 曾经的男神女神合并为交友
|
||||||
|
@property (nonatomic,strong)QXRoomSettingModel *roomTypeFunny;
|
||||||
|
|
||||||
|
|
||||||
/// 常用工具
|
/// 常用工具
|
||||||
/// 房间补贴
|
/// 房间补贴
|
||||||
@@ -178,14 +181,16 @@
|
|||||||
// }else{
|
// }else{
|
||||||
// toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
// toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
||||||
// }
|
// }
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2) {
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 2) {
|
||||||
toolsArr = @[self.roomSubsidy,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
toolsArr = @[self.roomSubsidy,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
||||||
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
// roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
||||||
|
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeFunny,self.roomTypeFriend];
|
||||||
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
||||||
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
||||||
}else{
|
}else{
|
||||||
toolsArr = @[self.roomSubsidy,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
|
toolsArr = @[self.roomSubsidy,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
|
||||||
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
// roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
||||||
|
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeFunny,self.roomTypeFriend];
|
||||||
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
||||||
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
||||||
}
|
}
|
||||||
@@ -208,13 +213,14 @@
|
|||||||
// }else{
|
// }else{
|
||||||
// toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
// toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
||||||
// }
|
// }
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2) {
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 2) {
|
||||||
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
||||||
}else{
|
}else{
|
||||||
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
|
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
|
||||||
}
|
}
|
||||||
|
|
||||||
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
// roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
||||||
|
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeFunny,self.roomTypeFriend];
|
||||||
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
||||||
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
||||||
self.titles = @[QXText(@"房间类型"),QXText(@"常用工具"),QXText(@"更多操作")];
|
self.titles = @[QXText(@"房间类型"),QXText(@"常用工具"),QXText(@"更多操作")];
|
||||||
@@ -227,12 +233,13 @@
|
|||||||
// }else{
|
// }else{
|
||||||
// toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
// toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
||||||
// }
|
// }
|
||||||
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2) {
|
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4 || self.roomModel.room_info.type_id.intValue == 8) && self.roomModel.room_info.label_id.intValue == 2) {
|
||||||
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgImage];
|
||||||
}else{
|
}else{
|
||||||
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
|
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
|
||||||
}
|
}
|
||||||
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
// roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
|
||||||
|
roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeFunny,self.roomTypeFriend];
|
||||||
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
|
||||||
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
|
||||||
self.titles = @[QXText(@"房间类型"),QXText(@"常用工具"),QXText(@"更多操作")];
|
self.titles = @[QXText(@"房间类型"),QXText(@"常用工具"),QXText(@"更多操作")];
|
||||||
@@ -315,7 +322,7 @@
|
|||||||
// [self.welcomeView showInView:self.viewController.view];
|
// [self.welcomeView showInView:self.viewController.view];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (model.type == QXRoomSettingTypeRoomTypeAuction || model.type == QXRoomSettingTypeRoomTypeSing || model.type == QXRoomSettingTypeRoomTypeBoy || model.type == QXRoomSettingTypeRoomTypeGirl || model.type == QXRoomSettingTypeRoomTypeFriend) {
|
if (model.type == QXRoomSettingTypeRoomTypeAuction || model.type == QXRoomSettingTypeRoomTypeSing || model.type == QXRoomSettingTypeRoomTypeBoy || model.type == QXRoomSettingTypeRoomTypeGirl || model.type == QXRoomSettingTypeRoomTypeFriend || model.type == QXRoomSettingTypeRoomTypeFunny) {
|
||||||
self.alertView.message = [NSString stringWithFormat:@"您确定要修改为%@房吗?",model.name];
|
self.alertView.message = [NSString stringWithFormat:@"您确定要修改为%@房吗?",model.name];
|
||||||
[[QXGlobal shareGlobal] showView:self.alertView controller:self.viewController popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
|
[[QXGlobal shareGlobal] showView:self.alertView controller:self.viewController popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
|
||||||
|
|
||||||
@@ -343,6 +350,8 @@
|
|||||||
type = @"4";
|
type = @"4";
|
||||||
}else if (roomType == QXRoomSettingTypeRoomTypeFriend) {
|
}else if (roomType == QXRoomSettingTypeRoomTypeFriend) {
|
||||||
type = @"7";
|
type = @"7";
|
||||||
|
}else if (roomType == QXRoomSettingTypeRoomTypeFunny) {
|
||||||
|
type = @"8";
|
||||||
}
|
}
|
||||||
[QXMineNetwork changeRoomTypeWithRoomId:self.roomModel.room_info.room_id type:type successBlock:^(NSDictionary * _Nonnull dict) {
|
[QXMineNetwork changeRoomTypeWithRoomId:self.roomModel.room_info.room_id type:type successBlock:^(NSDictionary * _Nonnull dict) {
|
||||||
|
|
||||||
@@ -407,13 +416,21 @@
|
|||||||
-(QXRoomSettingModel *)roomTypeFriend{
|
-(QXRoomSettingModel *)roomTypeFriend{
|
||||||
if (!_roomTypeFriend) {
|
if (!_roomTypeFriend) {
|
||||||
_roomTypeFriend = [[QXRoomSettingModel alloc] init];
|
_roomTypeFriend = [[QXRoomSettingModel alloc] init];
|
||||||
_roomTypeFriend.name = QXText(@"交友");
|
_roomTypeFriend.name = QXText(@"互娱");
|
||||||
_roomTypeFriend.type = QXRoomSettingTypeRoomTypeFriend;
|
_roomTypeFriend.type = QXRoomSettingTypeRoomTypeFriend;
|
||||||
_roomTypeFriend.icon = @"room_set_room_type_friend";
|
_roomTypeFriend.icon = @"room_set_room_type_friend";
|
||||||
}
|
}
|
||||||
return _roomTypeFriend;
|
return _roomTypeFriend;
|
||||||
}
|
}
|
||||||
|
-(QXRoomSettingModel *)roomTypeFunny{
|
||||||
|
if (!_roomReport) {
|
||||||
|
_roomReport = [[QXRoomSettingModel alloc] init];
|
||||||
|
_roomReport.name = QXText(@"交友");
|
||||||
|
_roomReport.type = QXRoomSettingTypeRoomTypeFunny;
|
||||||
|
_roomReport.icon = @"room_set_room_type_funny";
|
||||||
|
}
|
||||||
|
return _roomReport;
|
||||||
|
}
|
||||||
-(QXRoomSettingModel *)roomSubsidy{
|
-(QXRoomSettingModel *)roomSubsidy{
|
||||||
if (!_roomSubsidy) {
|
if (!_roomSubsidy) {
|
||||||
_roomSubsidy = [[QXRoomSettingModel alloc] init];
|
_roomSubsidy = [[QXRoomSettingModel alloc] init];
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
||||||
/// 设置魅力
|
/// 设置魅力
|
||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
||||||
|
/// 设置多人魅力
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel*>*)users;
|
||||||
/// 设置麦位锁麦状态
|
/// 设置麦位锁麦状态
|
||||||
-(void)setSeatIsLock:(NSString*)isLock pitNumber:(NSString*)pitNumber;
|
-(void)setSeatIsLock:(NSString*)isLock pitNumber:(NSString*)pitNumber;
|
||||||
/// 房间内换麦
|
/// 房间内换麦
|
||||||
|
|||||||
@@ -306,6 +306,9 @@
|
|||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model{
|
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model{
|
||||||
[self.leftSeatView setSeatCharmWithUser:model];
|
[self.leftSeatView setSeatCharmWithUser:model];
|
||||||
}
|
}
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
|
||||||
|
[self.leftSeatView setSeatCharmWithUsers:users];
|
||||||
|
}
|
||||||
|
|
||||||
-(void)startAction{
|
-(void)startAction{
|
||||||
self.timeSetView.pkId = self.roomModel.pk_info.pk_id;
|
self.timeSetView.pkId = self.roomModel.pk_info.pk_id;
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
-(void)auctionTypeDidChanged:(NSString *)type;
|
-(void)auctionTypeDidChanged:(NSString *)type;
|
||||||
|
|
||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
||||||
|
/// 设置多人魅力
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel*>*)users;
|
||||||
/// 清除魅力
|
/// 清除魅力
|
||||||
-(void)clearCharm;
|
-(void)clearCharm;
|
||||||
/// 清除个人魅力
|
/// 清除个人魅力
|
||||||
|
|||||||
@@ -867,6 +867,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
|
||||||
|
for (QXUserHomeModel*model in users) {
|
||||||
|
[self setSeatCharmWithUser:model];
|
||||||
|
}
|
||||||
|
}
|
||||||
-(void)clearCharm{
|
-(void)clearCharm{
|
||||||
for (int i = 0; i < self.roomModel.room_auction.auction_list.count; i++) {
|
for (int i = 0; i < self.roomModel.room_auction.auction_list.count; i++) {
|
||||||
if (i < 6) {
|
if (i < 6) {
|
||||||
|
|||||||
@@ -341,11 +341,9 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
||||||
na.viewControllers = viewControllers;
|
na.viewControllers = viewControllers;
|
||||||
[na popViewControllerAnimated:YES];
|
[na popViewControllerAnimated:YES];
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
||||||
[UIApplication sharedApplication].idleTimerDisabled = YES;
|
|
||||||
});
|
|
||||||
QXGlobal.shareGlobal.superRoomId = @"";
|
QXGlobal.shareGlobal.superRoomId = @"";
|
||||||
}else{
|
}else{
|
||||||
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomModel.room_info.room_id];
|
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomModel.room_info.room_id];
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ typedef NS_ENUM(NSInteger) {
|
|||||||
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
||||||
/// 设置魅力
|
/// 设置魅力
|
||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel*)model;
|
-(void)setSeatCharmWithUser:(QXUserHomeModel*)model;
|
||||||
|
/// 设置多人魅力
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel*>*)users;
|
||||||
/// 用户信息发生改变
|
/// 用户信息发生改变
|
||||||
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user;
|
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user;
|
||||||
/// 房间内换麦
|
/// 房间内换麦
|
||||||
|
|||||||
@@ -1116,6 +1116,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
|
||||||
|
for (QXUserHomeModel*model in users) {
|
||||||
|
[self setSeatCharmWithUser:model];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
|
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
|
||||||
for (id object in self.allSeatViewArray) {
|
for (id object in self.allSeatViewArray) {
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
||||||
/// 设置魅力
|
/// 设置魅力
|
||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
||||||
|
/// 设置多人魅力
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel*>*)users;
|
||||||
/// 设置麦位锁麦状态
|
/// 设置麦位锁麦状态
|
||||||
-(void)setSeatIsLock:(NSString*)isLock pitNumber:(NSString*)pitNumber;
|
-(void)setSeatIsLock:(NSString*)isLock pitNumber:(NSString*)pitNumber;
|
||||||
|
|
||||||
|
|||||||
@@ -355,6 +355,12 @@ static NSInteger maxSeat = 8;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
|
||||||
|
for (QXUserHomeModel*model in users) {
|
||||||
|
[self setSeatCharmWithUser:model];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
-(void)roomSeatExchangedWithFromPitNumber:(NSInteger)fromPitNumber toPitNumber:(NSInteger)toPitNumber{
|
-(void)roomSeatExchangedWithFromPitNumber:(NSInteger)fromPitNumber toPitNumber:(NSInteger)toPitNumber{
|
||||||
if (fromPitNumber == 0 || toPitNumber == 0) {
|
if (fromPitNumber == 0 || toPitNumber == 0) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
||||||
/// 设置魅力
|
/// 设置魅力
|
||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model;
|
||||||
|
/// 设置多人魅力
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel*>*)users;
|
||||||
|
|
||||||
-(void)didUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number;
|
-(void)didUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number;
|
||||||
/// 榜单发生变化
|
/// 榜单发生变化
|
||||||
|
|||||||
@@ -560,6 +560,13 @@ QXRoomSeatDelegate
|
|||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
|
||||||
|
for (QXUserHomeModel*model in users) {
|
||||||
|
[self setSeatCharmWithUser:model];
|
||||||
|
}
|
||||||
|
[self.collectionView reloadData];
|
||||||
|
}
|
||||||
|
|
||||||
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
|
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
|
||||||
QXRoomPitModel *singerModel = self.singerSeatView.pitModel;
|
QXRoomPitModel *singerModel = self.singerSeatView.pitModel;
|
||||||
if ([singerModel.user_id isEqualToString:user.user_id]) {
|
if ([singerModel.user_id isEqualToString:user.user_id]) {
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ typedef NS_ENUM(NSInteger) {
|
|||||||
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
-(void)roomClearUserCharmWithUserId:(NSString *)userId;
|
||||||
/// 设置魅力
|
/// 设置魅力
|
||||||
-(void)setSeatCharmWithUser:(QXUserHomeModel*)model;
|
-(void)setSeatCharmWithUser:(QXUserHomeModel*)model;
|
||||||
|
/// 设置魅力(多个用户)
|
||||||
|
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel*>*)users;
|
||||||
/// 设置麦位锁麦状态
|
/// 设置麦位锁麦状态
|
||||||
-(void)setSeatIsLock:(NSString*)isLock pitNumber:(NSString*)pitNumber;
|
-(void)setSeatIsLock:(NSString*)isLock pitNumber:(NSString*)pitNumber;
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user