Skip to content
切换导航面板
P
项目
G
群组
S
代码片段
帮助
徐利超
/
MutiFaceDemo
当前项目
正在载入...
登录
切换导航面板
转到一个项目
项目
版本库
问题
0
合并请求
0
流水线
维基
代码片段
成员
活动
图像
图表
创建新的问题
作业
提交
问题看板
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
affe3e2a
authored
Oct 23, 2020
by
徐利超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
e4443f6f
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
222 行增加
和
62 行删除
+222
-62
MutiFaceDemo/Application/SameScreen/YUNXINDemoView.h
+5
-1
MutiFaceDemo/Application/SameScreen/YUNXINDemoView.m
+24
-8
MutiFaceDemo/Application/SameScreen/YUNXINDemoViewController.m
+54
-3
MutiFaceDemo/Application/SameScreen/YUNXINSameScreen/YUNXINSameScreenView.h
+5
-2
MutiFaceDemo/Application/SameScreen/YUNXINSameScreen/YUNXINSameScreenView.m
+15
-10
MutiFaceDemo/Application/SameScreen/YUNXINSameScreenManager.h
+26
-1
MutiFaceDemo/Application/SameScreen/YUNXINSameScreenManager.m
+34
-21
MutiFaceDemo/Application/SameScreen/YWWhiteboard/YWScrawlView.h
+4
-4
MutiFaceDemo/Application/SameScreen/YWWhiteboard/YWScrawlView.m
+55
-12
没有找到文件。
MutiFaceDemo/Application/SameScreen/YUNXINDemoView.h
查看文件 @
affe3e2a
...
@@ -24,7 +24,11 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -24,7 +24,11 @@ NS_ASSUME_NONNULL_BEGIN
-
(
void
)
show
;
-
(
void
)
show
;
-
(
void
)
dismiss
;
-
(
void
)
dismiss
;
-
(
void
)
updateToolBarWhenSameScreenAuthorityReq
;
-
(
void
)
openMark
;
-
(
void
)
closeMark
;
-
(
void
)
updateToolBarWhenSameScreenAuthority
:(
BOOL
)
hasAuthority
;
@end
@end
...
...
MutiFaceDemo/Application/SameScreen/YUNXINDemoView.m
查看文件 @
affe3e2a
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
@property
(
nonatomic
,
strong
)
UIButton
*
undoBtn
;
@property
(
nonatomic
,
strong
)
UIButton
*
undoBtn
;
@property
(
nonatomic
,
assign
)
BOOL
isMark
;
@property
(
nonatomic
,
assign
)
BOOL
isMark
;
@property
(
nonatomic
,
assign
)
BOOL
hasAuthority
;
@end
@end
...
@@ -63,10 +64,15 @@
...
@@ -63,10 +64,15 @@
}
}
-
(
void
)
updateToolBarWhenSameScreenAuthority
Req
-
(
void
)
updateToolBarWhenSameScreenAuthority
:
(
BOOL
)
hasAuthority
{
{
[
self
.
callBackBtn
setTitle
:
@"收回同屏"
forState
:
UIControlStateNormal
];
self
.
hasAuthority
=
hasAuthority
;
if
(
hasAuthority
)
{
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
markBtn
]];
}
else
{
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
markBtn
,
self
.
callBackBtn
]];
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
markBtn
,
self
.
callBackBtn
]];
}
}
}
...
@@ -102,14 +108,26 @@
...
@@ -102,14 +108,26 @@
}];
}];
}
}
-
(
void
)
openMark
{
self
.
isMark
=
YES
;
[
self
.
cancelBtn
setTitle
:
@"取消标注"
forState
:
UIControlStateNormal
];
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
clearBtn
,
self
.
undoBtn
]];
}
-
(
void
)
closeMark
{
self
.
isMark
=
NO
;
[
self
.
cancelBtn
setTitle
:
@"取消同屏"
forState
:
UIControlStateNormal
];
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
markBtn
]];
}
#pragma mark - IBAction
#pragma mark - IBAction
-
(
void
)
cancelBtnTouched
-
(
void
)
cancelBtnTouched
{
{
if
(
self
.
isMark
)
{
if
(
self
.
isMark
)
{
self
.
isMark
=
NO
;
[
self
closeMark
]
;
[[
YUNXINSameScreenManager
shareInstance
]
closeMark
];
[[
YUNXINSameScreenManager
shareInstance
]
closeMark
];
[
self
.
cancelBtn
setTitle
:
@"取消同屏"
forState
:
UIControlStateNormal
];
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
markBtn
]];
}
else
{
}
else
{
[
self
dismiss
];
[
self
dismiss
];
[[
YUNXINSameScreenManager
shareInstance
]
cancelSameScreencAction
];
[[
YUNXINSameScreenManager
shareInstance
]
cancelSameScreencAction
];
...
@@ -129,10 +147,8 @@
...
@@ -129,10 +147,8 @@
-
(
void
)
markBtnTouched
-
(
void
)
markBtnTouched
{
{
self
.
isMark
=
YES
;
[
self
openMark
]
;
[[
YUNXINSameScreenManager
shareInstance
]
openMark
];
[[
YUNXINSameScreenManager
shareInstance
]
openMark
];
[
self
.
cancelBtn
setTitle
:
@"取消标注"
forState
:
UIControlStateNormal
];
[
self
updateToolBarViewWithshowArray
:@[
self
.
cancelBtn
,
self
.
clearBtn
,
self
.
undoBtn
]];
}
}
-
(
void
)
clearBtnTouched
-
(
void
)
clearBtnTouched
...
...
MutiFaceDemo/Application/SameScreen/YUNXINDemoViewController.m
查看文件 @
affe3e2a
...
@@ -18,6 +18,8 @@
...
@@ -18,6 +18,8 @@
@property
(
nonatomic
,
strong
)
YUNXINDemoView
*
demoView
;
@property
(
nonatomic
,
strong
)
YUNXINDemoView
*
demoView
;
@property
(
nonatomic
,
assign
)
BOOL
isShow
;
@end
@end
@implementation
YUNXINDemoViewController
@implementation
YUNXINDemoViewController
...
@@ -41,30 +43,63 @@
...
@@ -41,30 +43,63 @@
-
(
void
)
sameScreenBtnTouched
-
(
void
)
sameScreenBtnTouched
{
{
// [_demoView show];
// [[YUNXINSameScreenManager shareInstance] beginSameScreenAction];
// _noticeLabel.hidden = YES;
// _hangupBtn.hidden = YES;
// _sameScreenBtn.hidden = YES;
// _isShow = YES;
[[
YUNXINSameScreenManager
shareInstance
]
requestForSameScreen
];
}
#pragma mark - YUNXINSameScreenManagerDelegate
-
(
void
)
sameScreenRequestByUid
:
(
NSString
*
)
uid
{
UIAlertController
*
alertController
=
[
UIAlertController
alertControllerWithTitle
:
@""
message
:[
NSString
stringWithFormat
:
@"%@请求同屏"
,
uid
]
preferredStyle
:
UIAlertControllerStyleAlert
];
UIAlertAction
*
approve
=
[
UIAlertAction
actionWithTitle
:
@"同意"
style
:
UIAlertActionStyleDefault
handler
:^
(
UIAlertAction
*
_Nonnull
action
)
{
[[
YUNXINSameScreenManager
shareInstance
]
feedbackTheSameScreenRequset
:
YES
];
}];
UIAlertAction
*
refuse
=
[
UIAlertAction
actionWithTitle
:
@"拒绝"
style
:
UIAlertActionStyleCancel
handler
:^
(
UIAlertAction
*
_Nonnull
action
)
{
[[
YUNXINSameScreenManager
shareInstance
]
feedbackTheSameScreenRequset
:
NO
];
}];
[
alertController
addAction
:
approve
];
[
alertController
addAction
:
refuse
];
[
self
presentViewController
:
alertController
animated
:
YES
completion
:
nil
];
}
-
(
void
)
sameScreenRequestFeedbackWithUid
:
(
NSString
*
)
uid
isAgreed
:
(
BOOL
)
isAgreed
{
if
(
isAgreed
)
{
if
(
!
_isShow
)
{
[
_demoView
show
];
[
_demoView
show
];
[[
YUNXINSameScreenManager
shareInstance
]
beginSameScreenAction
];
[[
YUNXINSameScreenManager
shareInstance
]
beginSameScreenAction
];
_noticeLabel
.
hidden
=
YES
;
_noticeLabel
.
hidden
=
YES
;
_hangupBtn
.
hidden
=
YES
;
_hangupBtn
.
hidden
=
YES
;
_sameScreenBtn
.
hidden
=
YES
;
_sameScreenBtn
.
hidden
=
YES
;
_isShow
=
YES
;
}
}
}
}
#pragma mark - YUNXINSameScreenManagerDelegate
-
(
void
)
sameScreenCloseView
-
(
void
)
sameScreenCloseView
{
{
[
_demoView
dismiss
];
[
_demoView
dismiss
];
_noticeLabel
.
hidden
=
NO
;
_noticeLabel
.
hidden
=
NO
;
_hangupBtn
.
hidden
=
NO
;
_hangupBtn
.
hidden
=
NO
;
_sameScreenBtn
.
hidden
=
NO
;
_sameScreenBtn
.
hidden
=
NO
;
_isShow
=
NO
;
}
}
-
(
void
)
sameScreenReceiveOperateReqWithUid
:
(
NSString
*
)
uid
-
(
void
)
sameScreenReceiveOperateReqWithUid
:
(
NSString
*
)
uid
{
{
_demoView
.
requesterUid
=
uid
;
_demoView
.
requesterUid
=
uid
;
UIAlertController
*
alertController
=
[
UIAlertController
alertControllerWithTitle
:
@""
message
:[
NSString
stringWithFormat
:
@"%@请求同屏操作"
,
uid
]
preferredStyle
:
UIAlertControllerStyleAlert
];
UIAlertController
*
alertController
=
[
UIAlertController
alertControllerWithTitle
:
@""
message
:[
NSString
stringWithFormat
:
@"%@请求同屏操作
权限
"
,
uid
]
preferredStyle
:
UIAlertControllerStyleAlert
];
UIAlertAction
*
approve
=
[
UIAlertAction
actionWithTitle
:
@"同意"
style
:
UIAlertActionStyleDefault
handler
:^
(
UIAlertAction
*
_Nonnull
action
)
{
UIAlertAction
*
approve
=
[
UIAlertAction
actionWithTitle
:
@"同意"
style
:
UIAlertActionStyleDefault
handler
:^
(
UIAlertAction
*
_Nonnull
action
)
{
[[
YUNXINSameScreenManager
shareInstance
]
approveTheSameScreenOperateAuthorityWithRequseterUid
:
uid
isApproved
:
YES
];
[[
YUNXINSameScreenManager
shareInstance
]
approveTheSameScreenOperateAuthorityWithRequseterUid
:
uid
isApproved
:
YES
];
[
self
.
demoView
updateToolBarWhenSameScreenAuthority
Req
];
[
self
.
demoView
updateToolBarWhenSameScreenAuthority
:
NO
];
}];
}];
UIAlertAction
*
refuse
=
[
UIAlertAction
actionWithTitle
:
@"拒绝"
style
:
UIAlertActionStyleCancel
handler
:^
(
UIAlertAction
*
_Nonnull
action
)
{
UIAlertAction
*
refuse
=
[
UIAlertAction
actionWithTitle
:
@"拒绝"
style
:
UIAlertActionStyleCancel
handler
:^
(
UIAlertAction
*
_Nonnull
action
)
{
[[
YUNXINSameScreenManager
shareInstance
]
approveTheSameScreenOperateAuthorityWithRequseterUid
:
uid
isApproved
:
NO
];
[[
YUNXINSameScreenManager
shareInstance
]
approveTheSameScreenOperateAuthorityWithRequseterUid
:
uid
isApproved
:
NO
];
...
@@ -84,12 +119,28 @@
...
@@ -84,12 +119,28 @@
_sameScreenBtn
.
hidden
=
YES
;
_sameScreenBtn
.
hidden
=
YES
;
}
}
-
(
void
)
sameScreenReceiveOpenMarkNotification
{
[
_demoView
openMark
];
}
-
(
void
)
sameScreenReceiveCloseMarkNotification
{
[
_demoView
closeMark
];
}
-
(
void
)
sameScreenReceiveOperateAbandonNotification
{
[
_demoView
updateToolBarWhenSameScreenAuthority
:
YES
];
}
#pragma mark - YUNXINDemoViewDelegate
#pragma mark - YUNXINDemoViewDelegate
-
(
void
)
demoViewDismiss
-
(
void
)
demoViewDismiss
{
{
_noticeLabel
.
hidden
=
NO
;
_noticeLabel
.
hidden
=
NO
;
_hangupBtn
.
hidden
=
NO
;
_hangupBtn
.
hidden
=
NO
;
_sameScreenBtn
.
hidden
=
NO
;
_sameScreenBtn
.
hidden
=
NO
;
_isShow
=
NO
;
}
}
#pragma mark - setter/getter
#pragma mark - setter/getter
...
...
MutiFaceDemo/Application/SameScreen/YUNXINSameScreen/YUNXINSameScreenView.h
查看文件 @
affe3e2a
...
@@ -16,6 +16,8 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -16,6 +16,8 @@ NS_ASSUME_NONNULL_BEGIN
-
(
void
)
updateViewWithWebUrl
:(
NSString
*
)
webUrl
miniFlag
:(
NSString
*
)
miniFlag
;
-
(
void
)
updateViewWithWebUrl
:(
NSString
*
)
webUrl
miniFlag
:(
NSString
*
)
miniFlag
;
-
(
void
)
reloadCurrentView
;
-
(
void
)
updateWebViewWidth
:(
CGFloat
)
width
height
:(
CGFloat
)
height
;
-
(
void
)
updateWebViewWidth
:(
CGFloat
)
width
height
:(
CGFloat
)
height
;
-
(
void
)
updateViewWithContentY
:(
CGFloat
)
contentY
;
-
(
void
)
updateViewWithContentY
:(
CGFloat
)
contentY
;
-
(
void
)
updateWebViewWithWebAction
:(
NSDictionary
*
)
param
;
-
(
void
)
updateWebViewWithWebAction
:(
NSDictionary
*
)
param
;
...
@@ -25,8 +27,9 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -25,8 +27,9 @@ NS_ASSUME_NONNULL_BEGIN
-
(
void
)
cancelMark
;
-
(
void
)
cancelMark
;
-
(
void
)
addMarkWithParam
:(
NSDictionary
*
)
paramDic
;
-
(
void
)
addMarkWithParam
:(
NSDictionary
*
)
paramDic
;
-
(
void
)
clearCanvas
;
-
(
void
)
clearCanvas
;
-
(
void
)
undo
;
-
(
void
)
undoSelf
;
-
(
void
)
updateMarkOperateStatus
:(
BOOL
)
couldMark
;
-
(
void
)
undoOther
:(
NSString
*
)
uid
;
-
(
void
)
destoryHeartBeat
;
-
(
void
)
destoryHeartBeat
;
-
(
void
)
initHeartBeat
;
-
(
void
)
initHeartBeat
;
...
...
MutiFaceDemo/Application/SameScreen/YUNXINSameScreen/YUNXINSameScreenView.m
查看文件 @
affe3e2a
...
@@ -87,6 +87,11 @@ dispatch_async(dispatch_get_main_queue(), block);\
...
@@ -87,6 +87,11 @@ dispatch_async(dispatch_get_main_queue(), block);\
}
}
}
}
-
(
void
)
reloadCurrentView
{
[
_webView
reload
];
}
-
(
void
)
updateWebViewWidth
:
(
CGFloat
)
width
height
:
(
CGFloat
)
height
-
(
void
)
updateWebViewWidth
:
(
CGFloat
)
width
height
:
(
CGFloat
)
height
{
{
CGFloat
wbWidth
=
width
<
self
.
viewFrame
.
size
.
width
?
width
:
self
.
viewFrame
.
size
.
width
;
CGFloat
wbWidth
=
width
<
self
.
viewFrame
.
size
.
width
?
width
:
self
.
viewFrame
.
size
.
width
;
...
@@ -116,11 +121,6 @@ dispatch_async(dispatch_get_main_queue(), block);\
...
@@ -116,11 +121,6 @@ dispatch_async(dispatch_get_main_queue(), block);\
_webView
.
userInteractionEnabled
=
couldOperate
;
_webView
.
userInteractionEnabled
=
couldOperate
;
}
}
-
(
void
)
updateMarkOperateStatus
:
(
BOOL
)
couldMark
{
_webView
.
userInteractionEnabled
=
couldMark
;
_scrawlView
.
userInteractionEnabled
=
couldMark
;
}
#pragma mark - mark
#pragma mark - mark
...
@@ -131,9 +131,6 @@ dispatch_async(dispatch_get_main_queue(), block);\
...
@@ -131,9 +131,6 @@ dispatch_async(dispatch_get_main_queue(), block);\
_scrawlView
.
delegate
=
self
;
_scrawlView
.
delegate
=
self
;
[
self
addSubview
:
_scrawlView
];
[
self
addSubview
:
_scrawlView
];
}
}
if
(
self
.
isManager
)
{
_scrawlView
.
userInteractionEnabled
=
YES
;
}
_scrawlView
.
hidden
=
NO
;
_scrawlView
.
hidden
=
NO
;
}
}
...
@@ -153,15 +150,21 @@ dispatch_async(dispatch_get_main_queue(), block);\
...
@@ -153,15 +150,21 @@ dispatch_async(dispatch_get_main_queue(), block);\
[
_scrawlView
clearAllPaint
];
[
_scrawlView
clearAllPaint
];
}
}
-
(
void
)
undo
-
(
void
)
undo
Self
{
{
[
_scrawlView
undo
];
[
_scrawlView
undoSelf
];
}
-
(
void
)
undoOther
:
(
NSString
*
)
uid
{
[
_scrawlView
undoOther
:
uid
];
}
}
#pragma mark - heart
#pragma mark - heart
//取消心跳
//取消心跳
-
(
void
)
destoryHeartBeat
-
(
void
)
destoryHeartBeat
{
{
[
_webView
.
scrollView
setContentOffset
:
CGPointMake
(
0
,
0
)
animated
:
YES
];
dispatch_main_async_safe
(
^
{
dispatch_main_async_safe
(
^
{
if
(
self
->
heartBeat
)
{
if
(
self
->
heartBeat
)
{
if
([
self
->
heartBeat
respondsToSelector
:
@selector
(
isValid
)]){
if
([
self
->
heartBeat
respondsToSelector
:
@selector
(
isValid
)]){
...
@@ -221,6 +224,8 @@ dispatch_async(dispatch_get_main_queue(), block);\
...
@@ -221,6 +224,8 @@ dispatch_async(dispatch_get_main_queue(), block);\
completionHandler
();
completionHandler
();
}
}
#pragma mark - setter/getter
#pragma mark - setter/getter
-
(
WKWebView
*
)
webView
-
(
WKWebView
*
)
webView
{
{
...
...
MutiFaceDemo/Application/SameScreen/YUNXINSameScreenManager.h
查看文件 @
affe3e2a
...
@@ -17,6 +17,17 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -17,6 +17,17 @@ NS_ASSUME_NONNULL_BEGIN
@optional
@optional
//同屏相关
//同屏相关
/// 收到开始同屏请求 (非管理员使用)
/// @param uid 发起者云信token
-
(
void
)
sameScreenRequestByUid
:
(
NSString
*
)
uid
;
/// 请求同屏操作反馈 (管理员使用)
/// @param uid 反馈者云信token
/// @param isAgreed 是否同意
-
(
void
)
sameScreenRequestFeedbackWithUid
:(
NSString
*
)
uid
isAgreed
:(
BOOL
)
isAgreed
;
/// 在该回调内添加或展示同屏页面
/// 在该回调内添加或展示同屏页面
/// @param showUrl 展示的url
/// @param showUrl 展示的url
/// @param miniFlag 小程序对应的Flag
/// @param miniFlag 小程序对应的Flag
...
@@ -39,6 +50,13 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -39,6 +50,13 @@ NS_ASSUME_NONNULL_BEGIN
/// 收到非管理员主动放弃操作权限的通知 (管理员使用)
/// 收到非管理员主动放弃操作权限的通知 (管理员使用)
-
(
void
)
sameScreenReceiveOperateAbandonNotification
;
-
(
void
)
sameScreenReceiveOperateAbandonNotification
;
/// 收到打开标注通知
-
(
void
)
sameScreenReceiveOpenMarkNotification
;
/// 收到关闭标注通知
-
(
void
)
sameScreenReceiveCloseMarkNotification
;
@end
@end
@interface
YUNXINSameScreenManager
:
NSObject
@interface
YUNXINSameScreenManager
:
NSObject
...
@@ -74,6 +92,13 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -74,6 +92,13 @@ NS_ASSUME_NONNULL_BEGIN
-
(
void
)
updateSameScreenViewWithWebUrl
:(
NSString
*
)
webUrl
miniFlag
:(
NSString
*
)
miniFlag
;
-
(
void
)
updateSameScreenViewWithWebUrl
:(
NSString
*
)
webUrl
miniFlag
:(
NSString
*
)
miniFlag
;
/// 请求同屏
-
(
void
)
requestForSameScreen
;
/// 回复是否同意同屏
/// @param isAgreed 是否同意
-
(
void
)
feedbackTheSameScreenRequset
:(
BOOL
)
isAgreed
;
/// 开始同屏
/// 开始同屏
-
(
void
)
beginSameScreenAction
;
-
(
void
)
beginSameScreenAction
;
...
@@ -107,7 +132,7 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -107,7 +132,7 @@ NS_ASSUME_NONNULL_BEGIN
-
(
void
)
undoCanvas
;
-
(
void
)
undoCanvas
;
/// 发送自定义通知消息
/// 发送自定义通知消息
(忽略)
/// @param param param
/// @param param param
/// @param action action
/// @param action action
-
(
void
)
sendCustomSysMsgWithParam
:(
NSDictionary
*
)
param
action
:(
NSString
*
)
action
;
-
(
void
)
sendCustomSysMsgWithParam
:(
NSDictionary
*
)
param
action
:(
NSString
*
)
action
;
...
...
MutiFaceDemo/Application/SameScreen/YUNXINSameScreenManager.m
查看文件 @
affe3e2a
...
@@ -66,6 +66,7 @@
...
@@ -66,6 +66,7 @@
-
(
void
)
updateSameScreenViewWithWebUrl
:
(
NSString
*
)
webUrl
miniFlag
:
(
NSString
*
)
miniFlag
-
(
void
)
updateSameScreenViewWithWebUrl
:
(
NSString
*
)
webUrl
miniFlag
:
(
NSString
*
)
miniFlag
{
{
[
self
.
webView
updateViewWithWebUrl
:
webUrl
miniFlag
:
miniFlag
];
[
self
.
webView
updateViewWithWebUrl
:
webUrl
miniFlag
:
miniFlag
];
[
_webView
initHeartBeat
];
}
}
-
(
void
)
sameScreenSynchronizeViewSize
-
(
void
)
sameScreenSynchronizeViewSize
...
@@ -78,7 +79,16 @@
...
@@ -78,7 +79,16 @@
NSDictionary
*
attachment
=
msgContent
;
NSDictionary
*
attachment
=
msgContent
;
NSString
*
action
=
[
attachment
objectForKey
:
@"action"
];
NSString
*
action
=
[
attachment
objectForKey
:
@"action"
];
NSDictionary
*
param
=
[
attachment
objectForKey
:
@"param"
];
NSDictionary
*
param
=
[
attachment
objectForKey
:
@"param"
];
if
([
action
isEqualToString
:
SameScreenSyncSize
])
{
if
([
action
isEqualToString
:
SameScreenOpenReq
])
{
if
([
_delegate
respondsToSelector
:
@selector
(
sameScreenRequestByUid
:)])
{
[
_delegate
sameScreenRequestByUid
:
param
[
@"uid"
]];
}
}
else
if
([
action
isEqualToString
:
SameScreenOpenAnswer
])
{
BOOL
isAgree
=
[
param
[
@"agree"
]
isEqualToString
:
@"1"
];
if
([
_delegate
respondsToSelector
:
@selector
(
sameScreenRequestFeedbackWithUid
:
isAgreed
:
)])
{
[
_delegate
sameScreenRequestFeedbackWithUid
:
param
[
@"uid"
]
isAgreed
:
isAgree
];
}
}
else
if
([
action
isEqualToString
:
SameScreenSyncSize
])
{
CGFloat
remoteUesrWidth
=
[
param
[
@"width"
]
floatValue
];
CGFloat
remoteUesrWidth
=
[
param
[
@"width"
]
floatValue
];
CGFloat
remoteUesrHeight
=
[
param
[
@"height"
]
floatValue
];
CGFloat
remoteUesrHeight
=
[
param
[
@"height"
]
floatValue
];
[
self
.
webView
updateWebViewWidth
:
remoteUesrWidth
height
:
remoteUesrHeight
];
[
self
.
webView
updateWebViewWidth
:
remoteUesrWidth
height
:
remoteUesrHeight
];
...
@@ -87,6 +97,7 @@
...
@@ -87,6 +97,7 @@
[
_delegate
sameScreenShowViewWithShowUrl
:
param
[
@"url"
]
miniFlag
:
param
[
@"flag"
]];
[
_delegate
sameScreenShowViewWithShowUrl
:
param
[
@"url"
]
miniFlag
:
param
[
@"flag"
]];
}
}
}
else
if
([
action
isEqualToString
:
SameScreenCloseView
])
{
}
else
if
([
action
isEqualToString
:
SameScreenCloseView
])
{
[
_webView
destoryHeartBeat
];
if
([
_delegate
respondsToSelector
:
@selector
(
sameScreenCloseView
)])
{
if
([
_delegate
respondsToSelector
:
@selector
(
sameScreenCloseView
)])
{
[
_delegate
sameScreenCloseView
];
[
_delegate
sameScreenCloseView
];
}
}
...
@@ -101,26 +112,44 @@
...
@@ -101,26 +112,44 @@
}
else
if
([
action
isEqualToString
:
SameScreenOperateCallback
])
{
}
else
if
([
action
isEqualToString
:
SameScreenOperateCallback
])
{
[
self
dealWithOperateCallBack
:
param
];
[
self
dealWithOperateCallBack
:
param
];
}
else
if
([
action
isEqualToString
:
SameScreenOperateGiveUp
])
{
}
else
if
([
action
isEqualToString
:
SameScreenOperateGiveUp
])
{
[
self
dealWithOperateGiveUp
];
}
else
if
([
action
isEqualToString
:
SameScreenOpenMark
])
{
}
else
if
([
action
isEqualToString
:
SameScreenOpenMark
])
{
[
_webView
openMark
];
[
_webView
openMark
];
if
([
_delegate
respondsToSelector
:
@selector
(
sameScreenReceiveOpenMarkNotification
)])
{
[
_delegate
sameScreenReceiveOpenMarkNotification
];
}
}
else
if
([
action
isEqualToString
:
SameScreenCloseMark
])
{
}
else
if
([
action
isEqualToString
:
SameScreenCloseMark
])
{
[
_webView
cancelMark
];
[
_webView
cancelMark
];
if
([
_delegate
respondsToSelector
:
@selector
(
sameScreenReceiveCloseMarkNotification
)])
{
[
_delegate
sameScreenReceiveCloseMarkNotification
];
}
}
else
if
([
action
isEqualToString
:
SameScreenSyncMarkPath
])
{
}
else
if
([
action
isEqualToString
:
SameScreenSyncMarkPath
])
{
[
_webView
addMarkWithParam
:
param
];
[
_webView
addMarkWithParam
:
param
];
}
else
if
([
action
isEqualToString
:
SameScreenClearCanvas
])
{
}
else
if
([
action
isEqualToString
:
SameScreenClearCanvas
])
{
[
_webView
clearCanvas
];
[
_webView
clearCanvas
];
}
else
if
([
action
isEqualToString
:
SameScreenUndoPreviousPath
])
{
}
else
if
([
action
isEqualToString
:
SameScreenUndoPreviousPath
])
{
[
_webView
undo
];
[
_webView
undo
Other
:
param
[
@"uid"
]
];
}
}
}
}
-
(
void
)
requestForSameScreen
{
[
self
sendCustomSysMsgWithParam
:@{
@"uid"
:
[[[
NIMSDK
sharedSDK
]
loginManager
]
currentAccount
]}
action
:
SameScreenOpenReq
];
}
-
(
void
)
feedbackTheSameScreenRequset
:
(
BOOL
)
isAgreed
{
NSString
*
agree
=
isAgreed
?
@"1"
:
@"0"
;
[
self
sendCustomSysMsgWithParam
:@{
@"uid"
:
[[[
NIMSDK
sharedSDK
]
loginManager
]
currentAccount
],
@"agree"
:
agree
}
action
:
SameScreenOpenAnswer
];
}
-
(
void
)
beginSameScreenAction
-
(
void
)
beginSameScreenAction
{
{
if
(
_webView
)
{
if
(
_webView
)
{
[
self
sameScreenSynchronizeViewSize
];
[
self
sameScreenSynchronizeViewSize
];
[
self
sendCustomSysMsgWithParam
:[
_webView
getShowDic
]
action
:
SameScreenOpenView
];
[
self
sendCustomSysMsgWithParam
:[
_webView
getShowDic
]
action
:
SameScreenOpenView
];
[
_webView
updateOperateStatus
:
YES
];
[
_webView
initHeartBeat
];
[
_webView
initHeartBeat
];
}
}
}
}
...
@@ -178,27 +207,11 @@
...
@@ -178,27 +207,11 @@
-
(
void
)
undoCanvas
-
(
void
)
undoCanvas
{
{
[
_webView
undo
];
[
_webView
undo
Self
];
[
self
sendCustomSysMsgWithParam
:@{}
action
:
SameScreenUndoPreviousPath
];
[
self
sendCustomSysMsgWithParam
:@{
@"uid"
:
[[[
NIMSDK
sharedSDK
]
loginManager
]
currentAccount
]
}
action
:
SameScreenUndoPreviousPath
];
}
}
-
(
void
)
requestForMarkOperateAuthority
{
[
self
sendCustomSysMsgWithParam
:@{
@"uid"
:
[[[
NIMSDK
sharedSDK
]
loginManager
]
currentAccount
]}
action
:
SameScreenMarkReq
];
}
-
(
void
)
approveTheMarkOperateAuthorityWithRequseterUid
:
(
NSString
*
)
requesterUid
isApproved
:
(
BOOL
)
isApproved
{
NSString
*
approved
=
isApproved
?
@"1"
:
@"0"
;
[
_webView
updateMarkOperateStatus
:
!
isApproved
];
[
self
sendCustomSysMsgWithParam
:@{
@"uid"
:
requesterUid
,
@"approve"
:
approved
}
action
:
SameScreenMarkAnswer
];
}
-
(
void
)
callbackTheRequsterMarkOperateAuthorityWithRequsterUid
:
(
NSString
*
)
requesterUid
{
[
_webView
updateMarkOperateStatus
:
YES
];
[
self
sendCustomSysMsgWithParam
:@{
@"uid"
:
requesterUid
}
action
:
SameScreenMarkCallback
];
}
#pragma mark - sendCustomSysMsg
#pragma mark - sendCustomSysMsg
...
...
MutiFaceDemo/Application/SameScreen/YWWhiteboard/YWScrawlView.h
查看文件 @
affe3e2a
...
@@ -37,10 +37,10 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -37,10 +37,10 @@ NS_ASSUME_NONNULL_BEGIN
*/
*/
-
(
void
)
clearAllPaint
;
-
(
void
)
clearAllPaint
;
/
**
/
// 撤销自己上一步
* 撤销一步
-
(
void
)
undoSelf
;
*/
/// 撤销别人上一步
-
(
void
)
undo
;
-
(
void
)
undo
Other
:(
NSString
*
)
uid
;
@end
@end
...
...
MutiFaceDemo/Application/SameScreen/YWWhiteboard/YWScrawlView.m
查看文件 @
affe3e2a
...
@@ -14,6 +14,8 @@
...
@@ -14,6 +14,8 @@
/// 线条layer数组
/// 线条layer数组
@property
(
nonatomic
,
strong
)
NSMutableArray
*
pathLinesArr
;
@property
(
nonatomic
,
strong
)
NSMutableArray
*
pathLinesArr
;
/// 线条layer数组
@property
(
nonatomic
,
strong
)
NSMutableArray
*
myPathLinesArr
;
/// 当前真在绘画的轨迹笔
/// 当前真在绘画的轨迹笔
@property
(
nonatomic
,
strong
)
YWPaintPath
*
path
;
@property
(
nonatomic
,
strong
)
YWPaintPath
*
path
;
/// 当前正在绘画的轨迹坐标点集合
/// 当前正在绘画的轨迹坐标点集合
...
@@ -75,7 +77,8 @@
...
@@ -75,7 +77,8 @@
slayer
.
lineWidth
=
path
.
lineWidth
;
slayer
.
lineWidth
=
path
.
lineWidth
;
[
self
.
layer
addSublayer
:
slayer
];
[
self
.
layer
addSublayer
:
slayer
];
_slayer
=
slayer
;
_slayer
=
slayer
;
[[
self
mutableArrayValueForKey
:
@"pathLinesArr"
]
addObject
:
_slayer
];
NSDictionary
*
layerDic
=
@{
@"uid"
:
[[[
NIMSDK
sharedSDK
]
loginManager
]
currentAccount
],
@"layer"
:
_slayer
};
[[
self
mutableArrayValueForKey
:
@"myPathLinesArr"
]
addObject
:
layerDic
];
}
}
}
}
...
@@ -98,13 +101,14 @@
...
@@ -98,13 +101,14 @@
{
{
//send arr
//send arr
if
([
_delegate
respondsToSelector
:
@selector
(
sendScrawlViewParam
:)])
{
if
([
_delegate
respondsToSelector
:
@selector
(
sendScrawlViewParam
:)])
{
[
_delegate
sendScrawlViewParam
:@{
@"pathColor"
:
self
.
colorHexStr
,
@"pathArr"
:
self
.
pointArr
}];
[
_delegate
sendScrawlViewParam
:@{
@"pathColor"
:
self
.
colorHexStr
,
@"pathArr"
:
self
.
pointArr
,
@"uid"
:
[[[
NIMSDK
sharedSDK
]
loginManager
]
currentAccount
]
}];
}
}
}
}
-
(
void
)
drawLineWithPathData
:(
NSDictionary
*
)
paramDic
-
(
void
)
drawLineWithPathData
:(
NSDictionary
*
)
paramDic
{
{
if
(
paramDic
&&
[[
paramDic
objectForKey
:
@"pathArr"
]
isKindOfClass
:[
NSArray
class
]])
{
if
(
paramDic
&&
[[
paramDic
objectForKey
:
@"pathArr"
]
isKindOfClass
:[
NSArray
class
]])
{
NSString
*
uid
=
[
paramDic
objectForKey
:
@"uid"
];
NSString
*
pathColor
=
[
paramDic
objectForKey
:
@"pathColor"
];
NSString
*
pathColor
=
[
paramDic
objectForKey
:
@"pathColor"
];
NSArray
*
pathArr
=
[[
NSArray
alloc
]
initWithArray
:[
paramDic
objectForKey
:
@"pathArr"
]];
NSArray
*
pathArr
=
[[
NSArray
alloc
]
initWithArray
:[
paramDic
objectForKey
:
@"pathArr"
]];
CGPoint
startP
=
CGPointMake
([[[
pathArr
firstObject
]
objectForKey
:
@"x"
]
floatValue
],
[[[
pathArr
firstObject
]
objectForKey
:
@"y"
]
floatValue
]);
CGPoint
startP
=
CGPointMake
([[[
pathArr
firstObject
]
objectForKey
:
@"x"
]
floatValue
],
[[[
pathArr
firstObject
]
objectForKey
:
@"y"
]
floatValue
]);
...
@@ -115,7 +119,7 @@
...
@@ -115,7 +119,7 @@
CGPoint
moveP
=
CGPointMake
([[[
pathArr
objectAtIndex
:
i
]
objectForKey
:
@"x"
]
floatValue
],
[[[
pathArr
objectAtIndex
:
i
]
objectForKey
:
@"y"
]
floatValue
]);
CGPoint
moveP
=
CGPointMake
([[[
pathArr
objectAtIndex
:
i
]
objectForKey
:
@"x"
]
floatValue
],
[[[
pathArr
objectAtIndex
:
i
]
objectForKey
:
@"y"
]
floatValue
]);
[
path
addLineToPoint
:
moveP
];
[
path
addLineToPoint
:
moveP
];
}
}
_path
=
path
;
//
_path = path;
CAShapeLayer
*
slayer
=
[
CAShapeLayer
layer
];
CAShapeLayer
*
slayer
=
[
CAShapeLayer
layer
];
slayer
.
path
=
path
.
CGPath
;
slayer
.
path
=
path
.
CGPath
;
slayer
.
backgroundColor
=
[
UIColor
clearColor
].
CGColor
;
slayer
.
backgroundColor
=
[
UIColor
clearColor
].
CGColor
;
...
@@ -125,11 +129,12 @@
...
@@ -125,11 +129,12 @@
slayer
.
strokeColor
=
[
self
colorWithHexStr
:
pathColor
].
CGColor
;
slayer
.
strokeColor
=
[
self
colorWithHexStr
:
pathColor
].
CGColor
;
slayer
.
lineWidth
=
path
.
lineWidth
;
slayer
.
lineWidth
=
path
.
lineWidth
;
[
self
.
layer
addSublayer
:
slayer
];
[
self
.
layer
addSublayer
:
slayer
];
_slayer
=
slayer
;
// _slayer = slayer;
[
self
.
pathLinesArr
addObject
:
_slayer
];
NSDictionary
*
layerDic
=
@{
@"uid"
:
uid
,
@"layer"
:
slayer
};
[
self
.
pathLinesArr
addObject
:
layerDic
];
//主线程刷新UI
//主线程刷新UI
dispatch_async
(
dispatch_get_main_queue
(),
^
{
dispatch_async
(
dispatch_get_main_queue
(),
^
{
[
self
.
layer
addSublayer
:
s
elf
.
s
layer
];
[
self
.
layer
addSublayer
:
slayer
];
});
});
}
}
}
}
...
@@ -137,23 +142,52 @@
...
@@ -137,23 +142,52 @@
/// 清屏
/// 清屏
-
(
void
)
clearAllPaint
-
(
void
)
clearAllPaint
{
{
if
(
!
self
.
pathLinesArr
.
count
)
{
if
(
!
self
.
pathLinesArr
.
count
&&
!
self
.
myPathLinesArr
.
count
)
{
return
;
return
;
}
}
[
self
.
pathLinesArr
makeObjectsPerformSelector
:
@selector
(
removeFromSuperlayer
)];
for
(
NSDictionary
*
layerDic
in
self
.
pathLinesArr
)
{
CAShapeLayer
*
layer
=
layerDic
[
@"layer"
];
[
layer
removeFromSuperlayer
];
}
for
(
NSDictionary
*
layerDic
in
self
.
myPathLinesArr
)
{
CAShapeLayer
*
layer
=
layerDic
[
@"layer"
];
[
layer
removeFromSuperlayer
];
}
[[
self
mutableArrayValueForKey
:
@"pathLinesArr"
]
removeAllObjects
];
[[
self
mutableArrayValueForKey
:
@"pathLinesArr"
]
removeAllObjects
];
[[
self
mutableArrayValueForKey
:
@"myPathLinesArr"
]
removeAllObjects
];
}
}
/// 撤销上一步
/// 撤销上一步
-
(
void
)
undo
-
(
void
)
undo
Self
{
{
if
(
!
self
.
p
athLinesArr
.
count
)
{
if
(
!
self
.
myP
athLinesArr
.
count
)
{
return
;
return
;
}
}
NSDictionary
*
layerDic
=
self
.
myPathLinesArr
.
lastObject
;
CAShapeLayer
*
layer
=
layerDic
[
@"layer"
];
[
layer
removeFromSuperlayer
];
[[
self
mutableArrayValueForKey
:
@"myPathLinesArr"
]
removeLastObject
];
}
-
(
void
)
undoOther
:
(
NSString
*
)
uid
{
[
self
.
pathLinesArr
.
lastObject
removeFromSuperlayer
];
NSMutableArray
*
uidArr
=
[
NSMutableArray
array
];
[[
self
mutableArrayValueForKey
:
@"pathLinesArr"
]
removeLastObject
];
for
(
NSDictionary
*
layerDic
in
self
.
pathLinesArr
)
{
if
([
layerDic
[
@"uid"
]
isEqualToString
:
uid
])
{
[
uidArr
addObject
:
layerDic
];
}
}
if
(
!
uidArr
.
count
)
{
return
;
}
NSDictionary
*
layerDic
=
uidArr
.
lastObject
;
CAShapeLayer
*
layer
=
layerDic
[
@"layer"
];
[
layer
removeFromSuperlayer
];
[[
self
mutableArrayValueForKey
:
@"pathLinesArr"
]
removeObject
:
layerDic
];
}
}
#pragma mark - color
#pragma mark - color
...
@@ -200,6 +234,15 @@
...
@@ -200,6 +234,15 @@
return
_pathLinesArr
;
return
_pathLinesArr
;
}
}
-
(
NSMutableArray
*
)
myPathLinesArr
{
if
(
!
_myPathLinesArr
)
{
_myPathLinesArr
=
[[
NSMutableArray
alloc
]
init
];
}
return
_myPathLinesArr
;
}
-
(
NSMutableArray
*
)
pointArr
{
-
(
NSMutableArray
*
)
pointArr
{
if
(
!
_pointArr
)
{
if
(
!
_pointArr
)
{
_pointArr
=
[[
NSMutableArray
alloc
]
init
];
_pointArr
=
[[
NSMutableArray
alloc
]
init
];
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或
登录
后发表评论