mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-08 19:10:53 +00:00
Various fixes
This commit is contained in:
parent
56795dd1c4
commit
58c78a103d
@ -33,7 +33,7 @@ final class CameraDevice {
|
||||
self.position = position
|
||||
|
||||
var selectedDevice: AVCaptureDevice?
|
||||
if #available(iOS 13.0, *) {
|
||||
if #available(iOS 13.0, *), position != .front {
|
||||
if let device = AVCaptureDevice.default(.builtInTripleCamera, for: .video, position: position) {
|
||||
selectedDevice = device
|
||||
} else if let device = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: position) {
|
||||
|
@ -98,7 +98,7 @@ final class DrawingBubbleEntityView: DrawingEntityView {
|
||||
override func updateSelectionView() {
|
||||
super.updateSelectionView()
|
||||
|
||||
guard let selectionView = self.selectionView as? DrawingBubbleEntititySelectionView else {
|
||||
guard let selectionView = self.selectionView as? DrawingBubbleEntitySelectionView else {
|
||||
return
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ final class DrawingBubbleEntityView: DrawingEntityView {
|
||||
if let selectionView = self.selectionView {
|
||||
return selectionView
|
||||
}
|
||||
let selectionView = DrawingBubbleEntititySelectionView()
|
||||
let selectionView = DrawingBubbleEntitySelectionView()
|
||||
selectionView.entityView = self
|
||||
return selectionView
|
||||
}
|
||||
@ -125,7 +125,7 @@ final class DrawingBubbleEntityView: DrawingEntityView {
|
||||
}
|
||||
}
|
||||
|
||||
final class DrawingBubbleEntititySelectionView: DrawingEntitySelectionView, UIGestureRecognizerDelegate {
|
||||
final class DrawingBubbleEntitySelectionView: DrawingEntitySelectionView {
|
||||
private let leftHandle = SimpleShapeLayer()
|
||||
private let topLeftHandle = SimpleShapeLayer()
|
||||
private let topHandle = SimpleShapeLayer()
|
||||
@ -135,9 +135,7 @@ final class DrawingBubbleEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
private let bottomHandle = SimpleShapeLayer()
|
||||
private let bottomRightHandle = SimpleShapeLayer()
|
||||
private let tailHandle = SimpleShapeLayer()
|
||||
|
||||
private var panGestureRecognizer: UIPanGestureRecognizer!
|
||||
|
||||
|
||||
override init(frame: CGRect) {
|
||||
let handleBounds = CGRect(origin: .zero, size: entitySelectionViewHandleSize)
|
||||
let handles = [
|
||||
@ -170,12 +168,7 @@ final class DrawingBubbleEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
|
||||
self.layer.addSublayer(handle)
|
||||
}
|
||||
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
panGestureRecognizer.delegate = self
|
||||
self.addGestureRecognizer(panGestureRecognizer)
|
||||
self.panGestureRecognizer = panGestureRecognizer
|
||||
|
||||
|
||||
self.snapTool.onSnapUpdated = { [weak self] type, snapped in
|
||||
if let self, let entityView = self.entityView {
|
||||
entityView.onSnapUpdated(type, snapped)
|
||||
@ -196,15 +189,11 @@ final class DrawingBubbleEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
override var selectionInset: CGFloat {
|
||||
return 5.5
|
||||
}
|
||||
|
||||
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
private let snapTool = DrawingEntitySnapTool()
|
||||
|
||||
private var currentHandle: CALayer?
|
||||
@objc private func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
override func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
guard let entityView = self.entityView as? DrawingBubbleEntityView, let entity = entityView.entity as? DrawingBubbleEntity else {
|
||||
return
|
||||
}
|
||||
@ -235,6 +224,12 @@ final class DrawingBubbleEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
|
||||
let minimumSize = entityView.minimumSize
|
||||
|
||||
if self.currentHandle != nil && self.currentHandle !== self.layer {
|
||||
if gestureRecognizer.numberOfTouches > 1 {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if self.currentHandle === self.leftHandle {
|
||||
updatedSize.width = max(minimumSize.width, updatedSize.width - delta.x)
|
||||
updatedPosition.x -= delta.x * -0.5
|
||||
@ -392,8 +387,4 @@ final class DrawingBubbleEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
let selectionScale = (self.bounds.width - inset * 2.0) / (max(0.001, entity.size.width))
|
||||
self.tailHandle.position = CGPoint(x: inset + (self.bounds.width - inset * 2.0) * entity.tailPosition.x, y: self.bounds.height - inset + entity.tailPosition.y * selectionScale)
|
||||
}
|
||||
|
||||
var isTracking: Bool {
|
||||
return gestureIsTracking(self.panGestureRecognizer)
|
||||
}
|
||||
}
|
||||
|
@ -338,14 +338,15 @@ public final class DrawingEntitiesView: UIView, TGPhotoDrawingEntitiesView {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
if snapped {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
self.insertSubview(snapView, belowSubview: view)
|
||||
if snapView.alpha < 1.0 {
|
||||
self.hapticFeedback.impact(.light)
|
||||
}
|
||||
transition.updateAlpha(layer: snapView.layer, alpha: 1.0)
|
||||
} else {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.4, curve: .easeInOut)
|
||||
transition.updateAlpha(layer: snapView.layer, alpha: 0.0)
|
||||
}
|
||||
}
|
||||
@ -373,8 +374,8 @@ public final class DrawingEntitiesView: UIView, TGPhotoDrawingEntitiesView {
|
||||
processSnap(snapped, self.bottomEdgeView)
|
||||
self.edgePreviewUpdated(snapped)
|
||||
case let .rotation(angle):
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
if let angle, let view {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
self.layer.insertSublayer(self.angleLayer, below: view.layer)
|
||||
self.angleLayer.transform = CATransform3DMakeRotation(angle, 0.0, 0.0, 1.0)
|
||||
if self.angleLayer.opacity < 1.0 {
|
||||
@ -383,6 +384,7 @@ public final class DrawingEntitiesView: UIView, TGPhotoDrawingEntitiesView {
|
||||
transition.updateAlpha(layer: self.angleLayer, alpha: 1.0)
|
||||
self.angleLayer.isHidden = isMediaEntity
|
||||
} else {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.4, curve: .easeInOut)
|
||||
transition.updateAlpha(layer: self.angleLayer, alpha: 0.0)
|
||||
}
|
||||
}
|
||||
@ -653,8 +655,18 @@ public final class DrawingEntitiesView: UIView, TGPhotoDrawingEntitiesView {
|
||||
return self.selectedEntityView != nil
|
||||
}
|
||||
|
||||
public var isEditingText: Bool {
|
||||
if let entityView = self.selectedEntityView as? DrawingTextEntityView, entityView.isEditing {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
public func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
if !self.hasSelection, let mediaEntityView = self.subviews.first(where: { $0 is DrawingEntityMediaView }) as? DrawingEntityMediaView {
|
||||
if let selectedEntityView = self.selectedEntityView, let selectionView = selectedEntityView.selectionView {
|
||||
selectionView.handlePan(gestureRecognizer)
|
||||
} else if let mediaEntityView = self.subviews.first(where: { $0 is DrawingEntityMediaView }) as? DrawingEntityMediaView {
|
||||
mediaEntityView.handlePan(gestureRecognizer)
|
||||
}
|
||||
}
|
||||
@ -795,7 +807,7 @@ public class DrawingEntityView: UIView {
|
||||
|
||||
let entitySelectionViewHandleSize = CGSize(width: 44.0, height: 44.0)
|
||||
public class DrawingEntitySelectionView: UIView {
|
||||
weak var entityView: DrawingEntityView?
|
||||
public weak var entityView: DrawingEntityView?
|
||||
|
||||
var tapped: () -> Void = { }
|
||||
|
||||
@ -818,6 +830,10 @@ public class DrawingEntitySelectionView: UIView {
|
||||
@objc func handleRotate(_ gestureRecognizer: UIRotationGestureRecognizer) {
|
||||
}
|
||||
|
||||
@objc public func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
|
||||
}
|
||||
|
||||
var selectionInset: CGFloat {
|
||||
return 0.0
|
||||
}
|
||||
|
@ -136,11 +136,7 @@ final class DrawingSimpleShapeEntityView: DrawingEntityView {
|
||||
}
|
||||
}
|
||||
|
||||
func gestureIsTracking(_ gestureRecognizer: UIPanGestureRecognizer) -> Bool {
|
||||
return [.began, .changed].contains(gestureRecognizer.state)
|
||||
}
|
||||
|
||||
final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView, UIGestureRecognizerDelegate {
|
||||
final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView {
|
||||
private let leftHandle = SimpleShapeLayer()
|
||||
private let topLeftHandle = SimpleShapeLayer()
|
||||
private let topHandle = SimpleShapeLayer()
|
||||
@ -150,8 +146,7 @@ final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView,
|
||||
private let bottomHandle = SimpleShapeLayer()
|
||||
private let bottomRightHandle = SimpleShapeLayer()
|
||||
|
||||
private var panGestureRecognizer: UIPanGestureRecognizer!
|
||||
|
||||
|
||||
override init(frame: CGRect) {
|
||||
let handleBounds = CGRect(origin: .zero, size: entitySelectionViewHandleSize)
|
||||
let handles = [
|
||||
@ -179,11 +174,6 @@ final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView,
|
||||
|
||||
self.layer.addSublayer(handle)
|
||||
}
|
||||
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
panGestureRecognizer.delegate = self
|
||||
self.addGestureRecognizer(panGestureRecognizer)
|
||||
self.panGestureRecognizer = panGestureRecognizer
|
||||
|
||||
self.snapTool.onSnapUpdated = { [weak self] type, snapped in
|
||||
if let self, let entityView = self.entityView {
|
||||
@ -206,14 +196,10 @@ final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView,
|
||||
return 5.5
|
||||
}
|
||||
|
||||
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
private let snapTool = DrawingEntitySnapTool()
|
||||
|
||||
private var currentHandle: CALayer?
|
||||
@objc private func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
override func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
guard let entityView = self.entityView as? DrawingSimpleShapeEntityView, let entity = entityView.entity as? DrawingSimpleShapeEntity else {
|
||||
return
|
||||
}
|
||||
@ -244,6 +230,12 @@ final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView,
|
||||
|
||||
let minimumSize = entityView.minimumSize
|
||||
|
||||
if self.currentHandle != nil && self.currentHandle !== self.layer {
|
||||
if gestureRecognizer.numberOfTouches > 1 {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if self.currentHandle === self.leftHandle {
|
||||
let deltaX = delta.x * cos(entity.rotation)
|
||||
let deltaY = delta.x * sin(entity.rotation)
|
||||
@ -437,8 +429,4 @@ final class DrawingSimpleShapeEntititySelectionView: DrawingEntitySelectionView,
|
||||
self.bottomHandle.position = CGPoint(x: self.bounds.midX, y: self.bounds.maxY - inset)
|
||||
self.bottomRightHandle.position = CGPoint(x: self.bounds.maxX - inset, y: self.bounds.maxY - inset)
|
||||
}
|
||||
|
||||
var isTracking: Bool {
|
||||
return gestureIsTracking(self.panGestureRecognizer)
|
||||
}
|
||||
}
|
||||
|
@ -401,13 +401,11 @@ public final class DrawingStickerEntityView: DrawingEntityView {
|
||||
}
|
||||
}
|
||||
|
||||
final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView, UIGestureRecognizerDelegate {
|
||||
final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView {
|
||||
private let border = SimpleShapeLayer()
|
||||
private let leftHandle = SimpleShapeLayer()
|
||||
private let rightHandle = SimpleShapeLayer()
|
||||
|
||||
private var panGestureRecognizer: UIPanGestureRecognizer!
|
||||
|
||||
override init(frame: CGRect) {
|
||||
let handleBounds = CGRect(origin: .zero, size: entitySelectionViewHandleSize)
|
||||
let handles = [
|
||||
@ -438,12 +436,7 @@ final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView, UIG
|
||||
|
||||
self.layer.addSublayer(handle)
|
||||
}
|
||||
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
panGestureRecognizer.delegate = self
|
||||
self.addGestureRecognizer(panGestureRecognizer)
|
||||
self.panGestureRecognizer = panGestureRecognizer
|
||||
|
||||
|
||||
self.snapTool.onSnapUpdated = { [weak self] type, snapped in
|
||||
if let self, let entityView = self.entityView {
|
||||
entityView.onSnapUpdated(type, snapped)
|
||||
@ -465,14 +458,10 @@ final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView, UIG
|
||||
return 18.0
|
||||
}
|
||||
|
||||
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
private let snapTool = DrawingEntitySnapTool()
|
||||
|
||||
private var currentHandle: CALayer?
|
||||
@objc private func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
override func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
guard let entityView = self.entityView, let entity = entityView.entity as? DrawingStickerEntity else {
|
||||
return
|
||||
}
|
||||
@ -502,7 +491,11 @@ final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView, UIG
|
||||
var updatedPosition = entity.position
|
||||
var updatedScale = entity.scale
|
||||
var updatedRotation = entity.rotation
|
||||
|
||||
if self.currentHandle === self.leftHandle || self.currentHandle === self.rightHandle {
|
||||
if gestureRecognizer.numberOfTouches > 1 {
|
||||
return
|
||||
}
|
||||
var deltaX = gestureRecognizer.translation(in: self).x
|
||||
if self.currentHandle === self.leftHandle {
|
||||
deltaX *= -1.0
|
||||
@ -549,6 +542,10 @@ final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView, UIG
|
||||
guard let entityView = self.entityView, let entity = entityView.entity as? DrawingStickerEntity else {
|
||||
return
|
||||
}
|
||||
|
||||
if self.currentHandle != nil && self.currentHandle !== self.layer {
|
||||
return
|
||||
}
|
||||
|
||||
switch gestureRecognizer.state {
|
||||
case .began, .changed:
|
||||
@ -572,6 +569,10 @@ final class DrawingStickerEntititySelectionView: DrawingEntitySelectionView, UIG
|
||||
return
|
||||
}
|
||||
|
||||
if self.currentHandle != nil && self.currentHandle !== self.layer {
|
||||
return
|
||||
}
|
||||
|
||||
let velocity = gestureRecognizer.velocity
|
||||
var updatedRotation = entity.rotation
|
||||
var rotation: CGFloat = 0.0
|
||||
|
@ -699,13 +699,11 @@ public final class DrawingTextEntityView: DrawingEntityView, UITextViewDelegate
|
||||
}
|
||||
}
|
||||
|
||||
final class DrawingTextEntititySelectionView: DrawingEntitySelectionView, UIGestureRecognizerDelegate {
|
||||
final class DrawingTextEntititySelectionView: DrawingEntitySelectionView {
|
||||
private let border = SimpleShapeLayer()
|
||||
private let leftHandle = SimpleShapeLayer()
|
||||
private let rightHandle = SimpleShapeLayer()
|
||||
|
||||
private var panGestureRecognizer: UIPanGestureRecognizer!
|
||||
|
||||
override init(frame: CGRect) {
|
||||
let handleBounds = CGRect(origin: .zero, size: entitySelectionViewHandleSize)
|
||||
let handles = [
|
||||
@ -732,12 +730,7 @@ final class DrawingTextEntititySelectionView: DrawingEntitySelectionView, UIGest
|
||||
|
||||
self.layer.addSublayer(handle)
|
||||
}
|
||||
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
panGestureRecognizer.delegate = self
|
||||
self.addGestureRecognizer(panGestureRecognizer)
|
||||
self.panGestureRecognizer = panGestureRecognizer
|
||||
|
||||
|
||||
self.snapTool.onSnapUpdated = { [weak self] type, snapped in
|
||||
if let self, let entityView = self.entityView {
|
||||
entityView.onSnapUpdated(type, snapped)
|
||||
@ -769,7 +762,7 @@ final class DrawingTextEntititySelectionView: DrawingEntitySelectionView, UIGest
|
||||
private let snapTool = DrawingEntitySnapTool()
|
||||
|
||||
private var currentHandle: CALayer?
|
||||
@objc private func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
override func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
guard let entityView = self.entityView, let entity = entityView.entity as? DrawingTextEntity else {
|
||||
return
|
||||
}
|
||||
@ -801,6 +794,9 @@ final class DrawingTextEntititySelectionView: DrawingEntitySelectionView, UIGest
|
||||
var updatedRotation = entity.rotation
|
||||
|
||||
if self.currentHandle === self.leftHandle || self.currentHandle === self.rightHandle {
|
||||
if gestureRecognizer.numberOfTouches > 1 {
|
||||
return
|
||||
}
|
||||
var deltaX = gestureRecognizer.translation(in: self).x
|
||||
if self.currentHandle === self.leftHandle {
|
||||
deltaX *= -1.0
|
||||
|
@ -123,13 +123,11 @@ private func midPointPositionFor(start: CGPoint, end: CGPoint, length: CGFloat,
|
||||
return p2
|
||||
}
|
||||
|
||||
final class DrawingVectorEntititySelectionView: DrawingEntitySelectionView, UIGestureRecognizerDelegate {
|
||||
final class DrawingVectorEntititySelectionView: DrawingEntitySelectionView {
|
||||
private let startHandle = SimpleShapeLayer()
|
||||
private let midHandle = SimpleShapeLayer()
|
||||
private let endHandle = SimpleShapeLayer()
|
||||
|
||||
private var panGestureRecognizer: UIPanGestureRecognizer!
|
||||
|
||||
|
||||
var scale: CGFloat = 1.0 {
|
||||
didSet {
|
||||
self.setNeedsLayout()
|
||||
@ -164,23 +162,14 @@ final class DrawingVectorEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
self.layer.addSublayer(self.startHandle)
|
||||
self.layer.addSublayer(self.midHandle)
|
||||
self.layer.addSublayer(self.endHandle)
|
||||
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
panGestureRecognizer.delegate = self
|
||||
self.addGestureRecognizer(panGestureRecognizer)
|
||||
self.panGestureRecognizer = panGestureRecognizer
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
private var currentHandle: CALayer?
|
||||
@objc private func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
override func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
guard let entityView = self.entityView as? DrawingVectorEntityView, let entity = entityView.entity as? DrawingVectorEntity else {
|
||||
return
|
||||
}
|
||||
@ -199,6 +188,10 @@ final class DrawingVectorEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
}
|
||||
self.currentHandle = self.layer
|
||||
case .changed:
|
||||
if gestureRecognizer.numberOfTouches > 1 {
|
||||
return
|
||||
}
|
||||
|
||||
let delta = gestureRecognizer.translation(in: entityView)
|
||||
|
||||
var updatedStart = entity.start
|
||||
@ -287,8 +280,4 @@ final class DrawingVectorEntititySelectionView: DrawingEntitySelectionView, UIGe
|
||||
self.endHandle.bounds = bounds
|
||||
self.endHandle.lineWidth = lineWidth
|
||||
}
|
||||
|
||||
var isTracking: Bool {
|
||||
return gestureIsTracking(self.panGestureRecognizer)
|
||||
}
|
||||
}
|
||||
|
@ -57,6 +57,7 @@
|
||||
|
||||
@property (nonatomic, copy) void(^ _Nonnull hasSelectionChanged)(bool);
|
||||
@property (nonatomic, readonly) BOOL hasSelection;
|
||||
@property (nonatomic, readonly) BOOL isEditingText;
|
||||
|
||||
- (void)play;
|
||||
- (void)pause;
|
||||
@ -66,6 +67,7 @@
|
||||
- (void)clearSelection;
|
||||
- (void)onZoom;
|
||||
|
||||
- (void)handlePan:(UIPanGestureRecognizer * _Nonnull)gestureRecognizer;
|
||||
- (void)handlePinch:(UIPinchGestureRecognizer * _Nonnull)gestureRecognizer;
|
||||
- (void)handleRotate:(UIRotationGestureRecognizer * _Nonnull)gestureRecognizer;
|
||||
|
||||
|
@ -44,6 +44,7 @@ const CGSize TGPhotoPaintingMaxSize = { 1920.0f, 1920.0f };
|
||||
TGPaintingWrapperView *_paintingWrapperView;
|
||||
UIView<TGPhotoDrawingView> *_drawingView;
|
||||
|
||||
UIPanGestureRecognizer *_entityPanGestureRecognizer;
|
||||
UIPinchGestureRecognizer *_entityPinchGestureRecognizer;
|
||||
UIRotationGestureRecognizer *_entityRotationGestureRecognizer;
|
||||
|
||||
@ -153,6 +154,12 @@ const CGSize TGPhotoPaintingMaxSize = { 1920.0f, 1920.0f };
|
||||
// [_scrollContainerView addTarget:self action:@selector(containerPressed) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_scrollContentView addSubview:_scrollContainerView];
|
||||
|
||||
_entityPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
|
||||
_entityPanGestureRecognizer.delegate = self;
|
||||
_entityPanGestureRecognizer.minimumNumberOfTouches = 1;
|
||||
_entityPanGestureRecognizer.maximumNumberOfTouches = 2;
|
||||
[_scrollContentView addGestureRecognizer:_entityPanGestureRecognizer];
|
||||
|
||||
_entityPinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
|
||||
_entityPinchGestureRecognizer.delegate = self;
|
||||
[_scrollContentView addGestureRecognizer:_entityPinchGestureRecognizer];
|
||||
@ -278,6 +285,10 @@ const CGSize TGPhotoPaintingMaxSize = { 1920.0f, 1920.0f };
|
||||
[_entitiesView clearSelection];
|
||||
}
|
||||
|
||||
- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer {
|
||||
[_entitiesView handlePan:gestureRecognizer];
|
||||
}
|
||||
|
||||
- (void)handlePinch:(UIPinchGestureRecognizer *)gestureRecognizer
|
||||
{
|
||||
[_entitiesView handlePinch:gestureRecognizer];
|
||||
@ -293,6 +304,9 @@ const CGSize TGPhotoPaintingMaxSize = { 1920.0f, 1920.0f };
|
||||
if (gestureRecognizer == _entityPinchGestureRecognizer && !_entitiesView.hasSelection) {
|
||||
return false;
|
||||
}
|
||||
if (_entitiesView.isEditingText) {
|
||||
return false;
|
||||
}
|
||||
return !_drawingView.isTracking;
|
||||
}
|
||||
|
||||
|
@ -1960,7 +1960,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
panGestureRecognizer.delegate = self
|
||||
panGestureRecognizer.minimumNumberOfTouches = 2
|
||||
panGestureRecognizer.minimumNumberOfTouches = 1
|
||||
panGestureRecognizer.maximumNumberOfTouches = 2
|
||||
self.previewContainerView.addGestureRecognizer(panGestureRecognizer)
|
||||
|
||||
@ -2036,7 +2036,11 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
|
||||
@objc func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
if let panRecognizer = gestureRecognizer as? UIPanGestureRecognizer, panRecognizer.minimumNumberOfTouches == 1, panRecognizer.state == .changed {
|
||||
return false
|
||||
if otherGestureRecognizer is UIPinchGestureRecognizer || otherGestureRecognizer is UIRotationGestureRecognizer {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
} else if let panRecognizer = otherGestureRecognizer as? UIPanGestureRecognizer, panRecognizer.minimumNumberOfTouches == 1, panRecognizer.state == .changed {
|
||||
return false
|
||||
} else if gestureRecognizer is UITapGestureRecognizer, (otherGestureRecognizer is UIPinchGestureRecognizer || otherGestureRecognizer is UIRotationGestureRecognizer) && otherGestureRecognizer.state == .changed {
|
||||
@ -2046,6 +2050,9 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
}
|
||||
|
||||
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
if self.entitiesView.isEditingText {
|
||||
return false
|
||||
}
|
||||
if gestureRecognizer === self.dismissPanGestureRecognizer {
|
||||
if self.isDisplayingTool || self.entitiesView.hasSelection {
|
||||
return false
|
||||
|
@ -951,20 +951,6 @@ public final class MediaToolsScreen: ViewController {
|
||||
|
||||
self.view.disablesInteractiveModalDismiss = true
|
||||
self.view.disablesInteractiveKeyboardGestureRecognizer = true
|
||||
|
||||
// let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
|
||||
// panGestureRecognizer.delegate = self
|
||||
// panGestureRecognizer.minimumNumberOfTouches = 2
|
||||
// panGestureRecognizer.maximumNumberOfTouches = 2
|
||||
// self.previewContainerView.addGestureRecognizer(panGestureRecognizer)
|
||||
//
|
||||
// let pinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: #selector(self.handlePinch(_:)))
|
||||
// pinchGestureRecognizer.delegate = self
|
||||
// self.previewContainerView.addGestureRecognizer(pinchGestureRecognizer)
|
||||
//
|
||||
// let rotateGestureRecognizer = UIRotationGestureRecognizer(target: self, action: #selector(self.handleRotate(_:)))
|
||||
// rotateGestureRecognizer.delegate = self
|
||||
// self.previewContainerView.addGestureRecognizer(rotateGestureRecognizer)
|
||||
}
|
||||
|
||||
@objc func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
|
Loading…
x
Reference in New Issue
Block a user