Skip to content

Commit 22ae0f6

Browse files
authored
Merge pull request #780 from OneSignal/fix/iam_carousel_swipe
Disable swipe to dismiss for IAM Carousel
2 parents 7cb8525 + 8d47734 commit 22ae0f6

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

iOS_SDK/OneSignalSDK/Source/OSInAppMessage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ NS_ASSUME_NONNULL_BEGIN
4646
@property (nonatomic) BOOL isPreview;
4747
@property (nonatomic) BOOL isDisplayedInSession;
4848
@property (nonatomic) BOOL isTriggerChanged;
49+
@property (nonatomic) BOOL dragToDismissDisabled;
4950
@property (nonatomic) NSNumber *height;
5051

5152
- (BOOL)isBanner;

iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ typedef NS_ENUM(NSUInteger, OSInAppMessageBridgeEventType) {
4141
@interface OSInAppMessageBridgeEventRenderingComplete : NSObject <OSJSONDecodable>
4242
@property (nonatomic) OSInAppMessageDisplayPosition displayLocation;
4343
@property (nonatomic) NSNumber *height;
44+
@property (nonatomic) BOOL dragToDismissDisabled;
4445
@end
4546

4647
@interface OSInAppMessageBridgeEventResize : NSObject <OSJSONDecodable>

iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ + (instancetype)instanceWithJson:(NSDictionary *)json {
9797
if (json[@"pageMetaData"][@"rect"][@"height"])
9898
instance.height = json[@"pageMetaData"][@"rect"][@"height"];
9999

100+
if (json[@"dragToDismissDisabled"]) {
101+
instance.dragToDismissDisabled = [json[@"dragToDismissDisabled"] boolValue];
102+
}
103+
100104
return instance;
101105
}
102106

iOS_SDK/OneSignalSDK/Source/OSInAppMessageViewController.m

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -487,15 +487,16 @@ - (void)beginPanAtLocation:(CGPoint)location {
487487
Adds the pan recognizer (for swiping up and down) and the tap recognizer (for dismissing)
488488
*/
489489
- (void)setupGestureRecognizers {
490-
// Pan gesture recognizer for swiping
491-
let recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognizerDidMove:)];
492490

493-
[self.messageView addGestureRecognizer:recognizer];
494-
495-
recognizer.maximumNumberOfTouches = 1;
496-
recognizer.minimumNumberOfTouches = 1;
497-
498-
self.panGestureRecognizer = recognizer;
491+
if (!self.message.dragToDismissDisabled) {
492+
// Pan gesture recognizer for swiping
493+
let recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognizerDidMove:)];
494+
[self.messageView addGestureRecognizer:recognizer];
495+
recognizer.maximumNumberOfTouches = 1;
496+
recognizer.minimumNumberOfTouches = 1;
497+
498+
self.panGestureRecognizer = recognizer;
499+
}
499500

500501
// Only center modal and full screen should dismiss on background click
501502
// Banners will allow interacting with the view behind it still
@@ -632,6 +633,7 @@ - (void)jsEventOccurredWithBody:(NSData *)body {
632633

633634
self.message.position = event.renderingComplete.displayLocation;
634635
self.message.height = event.renderingComplete.height;
636+
self.message.dragToDismissDisabled = event.renderingComplete.dragToDismissDisabled;
635637

636638
// The page is fully loaded and should now be displayed
637639
// This is only fired once the javascript on the page sends the "rendering_complete" type event

0 commit comments

Comments
 (0)