mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-24 02:22:44 +02:00
Flush pills on text view updates
This commit is contained in:
@@ -26,6 +26,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
// The last hit test location received by the view.
|
||||
@property (nonatomic, readonly) CGPoint lastHitTestLocation;
|
||||
|
||||
|
||||
/// Register a view that has been added as a pill to this text view.
|
||||
/// This is needed in order to flush pills that are not always removed properly by the system.
|
||||
/// All registered views will be manually removed from hierarchy on attributedText or text updates.
|
||||
///
|
||||
/// @param pillView pill view to register
|
||||
- (void)registerPillView:(UIView *)pillView API_AVAILABLE(ios(15));
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
@interface MXKMessageTextView()
|
||||
|
||||
@property (nonatomic, readwrite) CGPoint lastHitTestLocation;
|
||||
@property (nonatomic) NSArray *pillViews;
|
||||
|
||||
@end
|
||||
|
||||
@@ -54,4 +55,40 @@
|
||||
return [self isThereALinkNearLocation:point];
|
||||
}
|
||||
|
||||
#pragma mark - Pills Flushing
|
||||
|
||||
- (void)setText:(NSString *)text
|
||||
{
|
||||
if (@available(iOS 15.0, *)) {
|
||||
[self flushPills];
|
||||
}
|
||||
[super setText:text];
|
||||
}
|
||||
|
||||
- (void)setAttributedText:(NSAttributedString *)attributedText
|
||||
{
|
||||
if (@available(iOS 15.0, *)) {
|
||||
[self flushPills];
|
||||
}
|
||||
[super setAttributedText:attributedText];
|
||||
}
|
||||
|
||||
- (void)registerPillView:(UIView *)pillView
|
||||
{
|
||||
NSMutableArray *pills = [NSMutableArray arrayWithArray:self.pillViews];
|
||||
[pills addObject:pillView];
|
||||
self.pillViews = pills;
|
||||
}
|
||||
|
||||
/// Flushes all previously registered Pills from their hierarchy.
|
||||
- (void)flushPills API_AVAILABLE(ios(15))
|
||||
{
|
||||
for (UIView* view in self.pillViews)
|
||||
{
|
||||
view.alpha = 0.0;
|
||||
[view removeFromSuperview];
|
||||
}
|
||||
self.pillViews = [NSArray new];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user