# WhiteRoom Class Reference (/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

Whiteboard iOS SDK 2.16.147 公开接口。

@interface WhiteRoom: WhiteDisplayer

## 成员 [#成员]

- [observerId](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/observerId)
- [uuid](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/uuid)
- [globalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/globalState)
- [memberState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/memberState)
- [roomMembers](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/roomMembers)
- [broadcastState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/broadcastState)
- [scale](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/scale)
- [state](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/state)
- [sceneState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/sceneState)
- [phase](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/phase)
- [setDrawOnlyApplePencil:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setDrawOnlyApplePencil:)
- [setGlobalState:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setGlobalState:)
- [setMemberState:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setMemberState:)
- [setViewMode:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setViewMode:)
- [debugInfo:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/debugInfo:)
- [disconnect:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disconnect:)
- [disconnectedBySelf](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disconnectedBySelf)
- [setWritable\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setWritable:completionHandler:)
- [writable](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/writable)
- [disableCameraTransform:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableCameraTransform:)
- [disableDeviceInputs:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableDeviceInputs:)
- [dispatchMagixEvent\:payload:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/dispatchMagixEvent:payload:)
- [pptNextStep](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/pptNextStep)
- [pptPreviousStep](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/pptPreviousStep)
- [insertText\:y\:textContent\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/insertText:y:textContent:completionHandler:)
- [updateText\:textContent:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/updateText:textContent:)
- [insertImage\:src:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/insertImage:src:)
- [insertImage:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/insertImage:)
- [completeImageUploadWithUuid\:src:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/completeImageUploadWithUuid:src:)
- [disableEraseImage:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableEraseImage:)
- [syncBlockTimestamp:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/syncBlockTimestamp:)
- [setTimeDelay:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setTimeDelay:)
- [delay](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/delay)
- [setSyncMode:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setSyncMode:)
- [setPrefersColorScheme:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setPrefersColorScheme:)
- [setContainerSizeRatio:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setContainerSizeRatio:)
- [setWindowManagerWithAttributes:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setWindowManagerWithAttributes:)
- [setWindowBoxState:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setWindowBoxState:)
- [getSceneStateWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getSceneStateWithResult:)
- [getScenesWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getScenesWithResult:)
- [setScenePath:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setScenePath:)
- [setScenePath\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setScenePath:completionHandler:)
- [setSceneIndex\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setSceneIndex:completionHandler:)
- [putScenes\:scenes\:index:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/putScenes:scenes:index:)
- [cleanScene:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/cleanScene:)
- [removeScenes:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/removeScenes:)
- [moveScene\:target:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/moveScene:target:)
- [addPage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/addPage)
- [addPage:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/addPage:)
- [removePage:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/removePage:)
- [removePage\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/removePage:completionHandler:)
- [addPageWithScene\:afterCurrentScene:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/addPageWithScene:afterCurrentScene:)
- [addPageWithScene\:afterCurrentScene\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/addPageWithScene:afterCurrentScene:completionHandler:)
- [nextPage:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/nextPage:)
- [prevPage:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/prevPage:)
- [copy](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/copy)
- [paste](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/paste)
- [duplicate](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/duplicate)
- [deleteOperation](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/deleteOperation)
- [disableSerialization:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableSerialization:)
- [redo](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/redo)
- [undo](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/undo)
- [getGlobalStateWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getGlobalStateWithResult:)
- [getMemberStateWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getMemberStateWithResult:)
- [getRoomMembersWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getRoomMembersWithResult:)
- [getBroadcastStateWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getBroadcastStateWithResult:)
- [getRoomPhaseWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getRoomPhaseWithResult:)
- [getZoomScaleWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getZoomScaleWithResult:)
- [getRoomStateWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getRoomStateWithResult:)
- [disableWindowOperation:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableWindowOperation:)
- [addApp\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/addApp:completionHandler:)
- [fitOriginSizeAndCamera](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/fitOriginSizeAndCamera)
- [closeApp\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/closeApp:completionHandler:)
- [focusApp:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/focusApp:)
- [focusApp\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/focusApp:completionHandler:)
- [queryAllAppsWithCompletionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/queryAllAppsWithCompletionHandler:)
- [queryApp\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/queryApp:completionHandler:)
- [dispatchDocsEvent\:options\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/dispatchDocsEvent:options:completionHandler:)
- [querySlidePageStateWithCompletionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/querySlidePageStateWithCompletionHandler:)
- [querySlidePageState\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/querySlidePageState:completionHandler:)
- [getPageState\:completionHandler:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getPageState:completionHandler:)
- [deleteOpertion](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/deleteOpertion)
- [disableOperations:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableOperations:)
- [zoomChange:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/zoomChange:)
- [getPptImagesWithResult:](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/getPptImagesWithResult:)

<a id="//api/name/observerId"></a>

### `observerId` [#observerid]

<ApiSignature>

@property (nonatomic, strong, readonly) NSNumber *observerId;

</ApiSignature>

```text
当前用户在白板上的序号 id。
 从 0 开始，与该用户在 RoomMember 中的 memberId 相同。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/uuid"></a>

### `uuid` [#uuid]

<ApiSignature>

@property (nonatomic, copy, readonly) NSString *uuid;

</ApiSignature>

```text
房间 uuid
```

Declared in Room/WhiteRoom.h

<a id="//api/name/globalState"></a>

### `globalState` [#globalstate]

<ApiSignature>

@property (nonatomic, strong, readonly) WhiteGlobalState *globalState;

</ApiSignature>

```text
房间的全局状态。详见 [WhiteGlobalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-global-state)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/memberState"></a>

### `memberState` [#memberstate]

<ApiSignature>

@property (nonatomic, strong, readonly) WhiteReadonlyMemberState *memberState;

</ApiSignature>

```text
教具信息
```

Declared in Room/WhiteRoom.h

<a id="//api/name/roomMembers"></a>

### `roomMembers` [#roommembers]

<ApiSignature>

@property (nonatomic, strong, readonly) NSArray&lt;WhiteRoomMember *&gt; *roomMembers;

</ApiSignature>

```text
白板在线成员信息
```

Declared in Room/WhiteRoom.h

<a id="//api/name/broadcastState"></a>

### `broadcastState` [#broadcaststate]

<ApiSignature>

@property (nonatomic, strong, readonly) WhiteBroadcastState *broadcastState;

</ApiSignature>

```text
视角状态信息，用户当前场景状态，主播信息
```

Declared in Room/WhiteRoom.h

<a id="//api/name/scale"></a>

### `scale` [#scale]

<ApiSignature>

@property (nonatomic, assign, readonly) CGFloat scale;

</ApiSignature>

```text
缩放比例
```

Declared in Room/WhiteRoom.h

<a id="//api/name/state"></a>

### `state` [#state]

<ApiSignature>

@property (nonatomic, strong, readonly) WhiteRoomState *state;

</ApiSignature>

```text
房间状态信息，继承自 WhiteDisplayerState（Room 与 Player 共同状态）
```

Declared in Room/WhiteRoom.h

<a id="//api/name/sceneState"></a>

### `sceneState` [#scenestate]

<ApiSignature>

@property (nonatomic, strong, readonly) WhiteSceneState *sceneState;

</ApiSignature>

```text
白板页面（场景）状态，属于房间状态之一
```

Declared in Room/WhiteRoom.h

<a id="//api/name/phase"></a>

### `phase` [#phase]

<ApiSignature>

@property (nonatomic, assign, readonly) WhiteRoomPhase phase;

</ApiSignature>

```text
连接状态
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setDrawOnlyApplePencil:"></a>

### `– setDrawOnlyApplePencil:` [#-setdrawonlyapplepencil]

<ApiSignature>

\- (void)setDrawOnlyApplePencil:(BOOL)drawOnlyPencil;

</ApiSignature>

```text
设置是否只允许ApplePencil涂鸦

 详见 [drawOnlyApplePencil](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room-config#//api/name/drawOnlyApplePencil)
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setGlobalState:"></a>

### `– setGlobalState:` [#-setglobalstate]

<ApiSignature>

\- (void)setGlobalState:(WhiteGlobalState *)globalState;

</ApiSignature>

```text
白板所有人共享的全局状态
 1.0 迁移用户，请阅读文档站中 [页面（场景）管理] ，使用setScencePath API 进行翻页。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setMemberState:"></a>

### `– setMemberState:` [#-setmemberstate]

<ApiSignature>

\- (void)setMemberState:(WhiteMemberState *)modifyState;

</ApiSignature>

```text
目前主要用来切换教具
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setViewMode:"></a>

### `– setViewMode:` [#-setviewmode]

<ApiSignature>

\- (void)setViewMode:(WhiteViewMode)viewMode;

</ApiSignature>

```text
切换用户视角模式
```

Declared in Room/WhiteRoom.h

<a id="//api/name/debugInfo:"></a>

### `– debugInfo:` [#-debuginfo]

<ApiSignature>

\- (void)debugInfo:(void (^ _Nullable)(NSDictionary * _Nullable dict))completionHandler;

</ApiSignature>

```text
白板 debug 用的一些信息
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disconnect:"></a>

### `– disconnect:` [#-disconnect]

<ApiSignature>

\- (void)disconnect:(void (^ _Nullable) (void))completeHandler;

</ApiSignature>

```text
主动断开与互动白板实时房间的连接。

 该方法会把与当前房间对象相关的所有资源释放掉。如果要再次加入房间，需要重新调用 [joinRoomWithConfig](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-sdk#//api/name/joinRoomWithConfig:callbacks:completionHandler:)。

 @param completeHandler 你可以通过该接口获取 `disconnect` 的调用结果：

 - 如果方法调用成功，则返回房间的全局状态。
 - 如果方法调用失败，则返回错误信息。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disconnectedBySelf"></a>

### `disconnectedBySelf` [#disconnectedbyself]

<ApiSignature>

@property (nonatomic, assign, readonly) BOOL disconnectedBySelf;

</ApiSignature>

```text
用户是否主动断开与白板房间的连接。在调用 `disconnect` 主动断连时，该值会被立即赋值为 `YES`。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setWritable:completionHandler:"></a>

### `– setWritable:completionHandler:` [#-setwritablecompletionhandler]

<ApiSignature>

\- (void)setWritable:(BOOL)writable completionHandler:(void (^ _Nullable)(BOOL isWritable, NSError * _Nullable error))completionHandler;

</ApiSignature>

```text
设置用户在房间中是否为互动模式。
 在加入房间前，就可以在 [WhiteRoomConfig](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room-config) 中设置 `isWritable` ，来决定该模式。

 @param writable 用户在房间中是否为互动模式：

  - `YES`：互动模式，即具有读写权限。
  - `NO`：订阅模式，即具有只读权限。

 @param completionHandler 你可以通过该接口获取 `setWritable` 的调用结果：

 - 如果方法调用成功，则返回用户在房间中的读写状态。
 - 如果方法调用失败，则返回错误信息。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/writable"></a>

### `writable` [#writable]

<ApiSignature>

@property (nonatomic, assign, readonly, getter=isWritable) BOOL writable;

</ApiSignature>

```text
本地用户在当前互动白板实时房间是否为互动模式。

 - `YES`：互动模式，即具有读写权限。
 - `NO`：订阅模式，即具有只读权限。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disableCameraTransform:"></a>

### `– disableCameraTransform:` [#-disablecameratransform]

<ApiSignature>

\- (void)disableCameraTransform:(BOOL)disableCameraTransform;

</ApiSignature>

```text
禁止/允许用户调整（移动或缩放）视角。

 @param disableCameraTransform 是否禁止用户调整视角：

  - `YES`：禁止用户调整视角。
  - `NO`：（默认）允许用户调整视角。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disableDeviceInputs:"></a>

### `– disableDeviceInputs:` [#-disabledeviceinputs]

<ApiSignature>

\- (void)disableDeviceInputs:(BOOL)disable;

</ApiSignature>

```text
禁止/允许用户操作工具。

 @param disable 是否禁止用户操作工具：

  - `YES`：禁止用户操作工具操作。
  - `NO`：（默认）允许用户操作工具输入操作。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/dispatchMagixEvent:payload:"></a>

### `– dispatchMagixEvent:payload:` [#-dispatchmagixeventpayload]

<ApiSignature>

\- (void)dispatchMagixEvent:(NSString *)eventName payload:(NSDictionary *)payload;

</ApiSignature>

```text
发送自定义事件。

 @param eventName 自定义事件名称，详见 [WhiteEvent](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-event)。

 @param payload 自定义事件内容，详见 [WhiteEvent](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-event)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/pptNextStep"></a>

### `– pptNextStep` [#-pptnextstep]

<ApiSignature>

\- (void)pptNextStep;

</ApiSignature>

```text
播放动态 PPT 下一步。

 当前 PPT 页面的动画已全部执行完成时，SDK 会将场景切换至下一页 PPT。

 注意，多窗口模式下该接口不再生效
```

Declared in Room/WhiteRoom.h

<a id="//api/name/pptPreviousStep"></a>

### `– pptPreviousStep` [#-pptpreviousstep]

<ApiSignature>

\- (void)pptPreviousStep;

</ApiSignature>

```text
返回动态 PPT 上一步。

 当前 PPT 页面的动画全部回退完成时，SDK 会将场景切回至上一页 PPT。

 注意，多窗口模式下该接口不再生效
```

Declared in Room/WhiteRoom.h

<a id="//api/name/insertText:y:textContent:completionHandler:"></a>

### `– insertText:y:textContent:completionHandler:` [#-inserttextytextcontentcompletionhandler]

<ApiSignature>

\- (void)insertText:(CGFloat)x y:(CGFloat)y textContent:(NSString *)textContent completionHandler:(void (^) (NSString * textId))completionHandler;

</ApiSignature>

```text
在指定位置插入文字
@param x 第一个字的的左侧边中点，世界坐标系中的 x 坐标
@param y 第一个字的的左侧边中点，世界坐标系中的 y 坐标
@param textContent 初始化文字的内容
@param completionHandler 返回该文字的标识符
```

Declared in Room/WhiteRoom.h

<a id="//api/name/updateText:textContent:"></a>

### `– updateText:textContent:` [#-updatetexttextcontent]

<ApiSignature>

\- (void)updateText:(NSString *)textId textContent:(NSString *)textContent;

</ApiSignature>

```text
更新置顶 id 文本内容
@param textId 文字标识符
@param textContent 文字内容
```

Declared in Room/WhiteRoom.h

<a id="//api/name/insertImage:src:"></a>

### `– insertImage:src:` [#-insertimagesrc]

<ApiSignature>

\- (void)insertImage:(WhiteImageInformation *)imageInfo src:(NSString *)src;

</ApiSignature>

```text
插入图片显示区域。

 SDK 会根据你传入的 `imageInfo` 在白板上设置并插入图片的显示区域。

*Note:** 你也可以调用 [insertImage](#//api/name/insertImage:src:) 方法同时传入图片信息和图片的 URL 地址，在白板中插入并展示图片。

 @param imageInfo 图片信息，详见 [WhiteImageInformation](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-image-information)。
 @param src 图片 URL 地址，详见 [WhiteImageInformation](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-image-information)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/insertImage:"></a>

### `– insertImage:` [#-insertimage]

<ApiSignature>

\- (void)insertImage:(WhiteImageInformation *)imageInfo;

</ApiSignature>

```text
插入图片显示区域。

 SDK 会根据你传入的 `imageInfo` 在白板上设置并插入图片的显示区域。

 @param imageInfo 图片信息，详见 [WhiteImageInformation](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-image-information)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/completeImageUploadWithUuid:src:"></a>

### `– completeImageUploadWithUuid:src:` [#-completeimageuploadwithuuidsrc]

<ApiSignature>

\- (void)completeImageUploadWithUuid:(NSString *)uuid src:(NSString *)src;

</ApiSignature>

```text
展示图片。

 该方法可以将指定的网络图片展示到指定的图片显示区域。

*Note:** 调用该方法前，请确保你已经调用 [insertImage](#//api/name/insertImage:src:) 方法在白板上插入了图片的显示区域。

 @param uuid 图片显示区域的 UUID, 即在 [insertImage](#//api/name/insertImage:src:) 方法的 `imageInfo` 中传入的图片 UUID。
 @param src 图片的 URL 地址。必须确保 app 客户端能访问该 URL，否则无法正常展示图片。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disableEraseImage:"></a>

### `– disableEraseImage:` [#-disableeraseimage]

<ApiSignature>

\- (void)disableEraseImage:(BOOL)disable;

</ApiSignature>

```text
关闭/开启橡皮擦擦除图片功能。

 @param disable 是否关闭橡皮擦擦除图片功能：

 - `YES`：禁止橡皮擦擦除图片。
 - `NO`：（默认）允许橡皮擦擦除图片。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/syncBlockTimestamp:"></a>

### `– syncBlockTimestamp:` [#-syncblocktimestamp]

<ApiSignature>

\- (void)syncBlockTimestamp:(NSTimeInterval)timestamp;

</ApiSignature>

```text
同步 UTC 时间与本地时间。

 导入 UTC 时间戳（s）后，白板会根据用户本地时间戳，与传入的 UTC 时间戳进行强行同步。

 @since 2.12.24

*Note:** 该 API 要求用户本地时间经过校准，否则可能会造成主动延时。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setTimeDelay:"></a>

### `– setTimeDelay:` [#-settimedelay]

<ApiSignature>

\- (void)setTimeDelay:(NSTimeInterval)delay;

</ApiSignature>

```text
设置远端白板画面同步延时。

 调用该方法后，SDK 会延迟同步远端白板画面。

 在 CDN 直播场景，设置远端白板画面同步延时，可以防止用户感知错位。
*Note:** 该方法不影响本地白板画面的显示，即用户在本地白板上的操作，会立即在本地白板上显示。

 @param delay 延时时长，单位为秒。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/delay"></a>

### `delay` [#delay]

<ApiSignature>

@property (nonatomic, assign, readonly) NSTimeInterval delay;

</ApiSignature>

Declared in Room/WhiteRoom.h

<a id="//api/name/setSyncMode:"></a>

### `– setSyncMode:` [#-setsyncmode]

<ApiSignature>

\- (void)setSyncMode:(BOOL)useSyncMode;

</ApiSignature>

```text
设置远端白板消息的同步策略。

 默认情况下，SDK 会以较平滑的速度处理同步消息。设置为 `YES` 后，SDK 会在收到消息时立即处理，
 以提高同步实时性。

 @param useSyncMode 是否立即处理收到的同步消息。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setPrefersColorScheme:"></a>

### `– setPrefersColorScheme:` [#-setpreferscolorscheme]

<ApiSignature>

\- (void)setPrefersColorScheme:(WhitePrefersColorScheme)colorScheme;

</ApiSignature>

```text
多窗口下更新窗口颜色配置

 @param colorScheme (WhitePrefersColorScheme)[WhitePrefersColorScheme]
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setContainerSizeRatio:"></a>

### `– setContainerSizeRatio:` [#-setcontainersizeratio]

<ApiSignature>

\- (void)setContainerSizeRatio:(NSNumber *)ratio;

</ApiSignature>

```text
多窗口下更新房间尺寸比例

 @param ratio 目标尺寸比例
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setWindowManagerWithAttributes:"></a>

### `– setWindowManagerWithAttributes:` [#-setwindowmanagerwithattributes]

<ApiSignature>

\- (void)setWindowManagerWithAttributes:(NSDictionary *)attributes;

</ApiSignature>

```text
为当前的 WindowManger 直接设置attributes

 @param attributes 需要设置的attributes
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setWindowBoxState:"></a>

### `– setWindowBoxState:` [#-setwindowboxstate]

<ApiSignature>

\- (void)setWindowBoxState:(WhiteWindowBoxState)state;

</ApiSignature>

```text
设置多窗口整体展示状态。

 状态变更结果通过 `fireRoomStateChanged:` 中的 `windowBoxState` 回调。

 @param state normal / minimized / maximized
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getSceneStateWithResult:"></a>

### `– getSceneStateWithResult:` [#-getscenestatewithresult]

<ApiSignature>

\- (void)getSceneStateWithResult:(void (^) (WhiteSceneState *state))result;

</ApiSignature>

```text
获取房间当前场景组下的场景状态。

 @param result 回调。返回当前场景组下的场景状态，详见 [WhiteSceneState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-scene-state)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getScenesWithResult:"></a>

### `– getScenesWithResult:` [#-getsceneswithresult]

<ApiSignature>

\- (void)getScenesWithResult:(void (^) (NSArray&lt;WhiteScene *&gt; *scenes))result;

</ApiSignature>

```text
获取房间当前场景组下的场景列表。

 @param result 回调。返回当前场景组下的场景列表，详见 [WhiteScene](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-scene)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setScenePath:"></a>

### `– setScenePath:` [#-setscenepath]

<ApiSignature>

\- (void)setScenePath:(NSString *)path;

</ApiSignature>

```text
切换至指定的场景。

 方法调用成功后，房间内的所有用户看到的白板都会切换到指定场景。

*Note:**

  - 该方法为同步调用。
  - 调用以下方法修改或新增场景后，无法通过 [setScenePath:](#//api/name/setScenePath:) 立即获取最新的场景状态。此时，如果需要立即获取最新的场景状态，可以调用 [setScenePath:completionHandler:()](#//api/name/setScenePath:completionHandler:)。

 场景切换失败可能有以下原因：

 - 路径不合法，请确保场景路径以 "/"，由场景组和场景名构成。
 - 场景路径对应的场景不存在。
 - 传入的路径是场景组的路径，而不是场景路径。
 @param path 想要切换到的场景的场景路径，请确保场景路径以 "/"，由场景组和场景名构成，例如，`/math/classA`。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setScenePath:completionHandler:"></a>

### `– setScenePath:completionHandler:` [#-setscenepathcompletionhandler]

<ApiSignature>

\- (void)setScenePath:(NSString *)dirOrPath completionHandler:(void (^ _Nullable)(BOOL success, NSError * _Nullable error))completionHandler;

</ApiSignature>

```text
切换至指定的场景。

 方法调用成功后，房间内的所有用户看到的白板都会切换到指定场景。

*Note:**

 - 该方法为异步调用。
 - 调用以下方法修改或新增场景后，你可以通过 [getSceneStateWithResult:](#//api/name/getSceneStateWithResult:) 立即获取最新的场景状态。

 场景切换失败可能有以下原因：

 - 路径不合法，请确保场景路径以 "/"，由场景组和场景名构成。
 - 场景路径对应的场景不存在。
 - 传入的路径是场景组的路径，而不是场景路径。
 @param dirOrPath    想要切换到的场景的场景路径，请确保场景路径以 "/"，由场景组和场景名构成，例如，`/math/classA`.
 @param completionHandler 你可以通过该接口获取 `setScenePath` 的调用结果：

 - 如果方法调用成功，则返回 `YES`.
 - 如果方法调用失败，则返回错误信息。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/setSceneIndex:completionHandler:"></a>

### `– setSceneIndex:completionHandler:` [#-setsceneindexcompletionhandler]

<ApiSignature>

\- (void)setSceneIndex:(NSUInteger)index completionHandler:(void (^ _Nullable)(BOOL success, NSError * _Nullable error))completionHandler;

</ApiSignature>

```text
切换至当前场景组下的指定场景。

 方法调用成功后，房间内的所有用户看到的白板都会切换到指定场景。

*Note:** 指定的场景必须在当前场景组中，否则，方法调用会失败。

 @param index   目标场景在当前场景组下的索引号。
 @param completionHandler 你可以通过该接口获取 `setSceneIndex` 的调用结果：
   - 如果方法调用成功，则返回 `YES`.
   - 如果方法调用失败，则返回错误信息。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/putScenes:scenes:index:"></a>

### `– putScenes:scenes:index:` [#-putscenesscenesindex]

<ApiSignature>

\- (void)putScenes:(NSString *)dir scenes:(NSArray&lt;WhiteScene *&gt; *)scenes index:(NSUInteger)index;

</ApiSignature>

```text
在指定场景组下插入多个场景。
*Note:** 调用该方法插入多个场景后不会切换到新插入的场景。如果要切换至新插入的场景，需要调用 [setScenePath](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setScenePath:)。

 @param dir    场景组名称，必须以 `/` 开头。不能为场景路径。
 @param scenes 由多个场景构成的数组。单个场景的字段详见 [WhiteScene](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-scene)。
 @param index  待插入的多个场景中，第一个场景在该场景组的索引号。如果传入的索引号大于该场景组已有场景总数，新插入的场景会排在现有场景的最后。场景的索引号从 0 开始。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/cleanScene:"></a>

### `– cleanScene:` [#-cleanscene]

<ApiSignature>

\- (void)cleanScene:(BOOL)retainPPT;

</ApiSignature>

```text
清除当前场景的所有内容。

 @param retainPPT 是否保留 PPT 内容：

  - `YES`：保留 PPT。
  - `NO`：连 PPT 一起清空。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/removeScenes:"></a>

### `– removeScenes:` [#-removescenes]

<ApiSignature>

\- (void)removeScenes:(NSString *)dirOrPath;

</ApiSignature>

```text
删除场景或者场景组。
 @param dirOrPath 场景组路径或者场景路径。如果传入的是场景组，则会删除该场景组下的所有场景。
*Note:**

 - 互动白板实时房间内必须至少有一个场景。当删除所有的场景后，SDK 会自动生成一个路径为 `/init` 初始场景（房间初始化时的默认场景），并切换到 `/init` 位置。
 - 如果传入的是场景组，则该场景组下的所有场景都会被删除。
 - 如果删除白板当前所在场景，白板会展示被删除场景所在场景组的下一个场景，如果没有下一个，则会移动到上一个，如果都没有，则往上上一级查找
 - 如果删除的是当前场景所在的场景组，例如 `dirA`，SDK 会执行向上递归逻辑选择新的场景作为当前场景，规则如下：
    - 如果当前场景组路径下还有其他场景组，例如 `dirB`，排在被删除的场景组 `dirA` 后面，则将场景切换至
    `dirB` 中的第一个场景（index 为 0）。
    - 如果当前场景组路径下 `dirA` 后不存在场景组，则查看当前场景组路径下是否存在场景；
    如果存在，则将场景切换至当前场景组路径下的第一个场景（index 为 0）。
    - 如果当前场景组路径下 `dirA` 后没有场景组，也不存在任何场景，则查看 `dirA` 前面是否存在场景组 `dirC`；如果存在，则选择 `dirC` 中的第一个场景（index 为 0）。
    - 以上都不满足，则继续向上递归执行该逻辑。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/moveScene:target:"></a>

### `– moveScene:target:` [#-movescenetarget]

<ApiSignature>

\- (void)moveScene:(NSString *)source target:(NSString *)target;

</ApiSignature>

```text
移动场景。

 成功移动场景后，场景路径也会改变。
*Note:**

 - 该方法只能移动场景，不能移动场景组，即 `source` 只能是场景路径，不能是场景组路径。
 - 该方法支持改变指定场景在当前所属场景组下的位置，也支持将指定场景移至其他场景组。
 @param source 需要移动的场景原路径。必须为场景路径，不能是场景组的路径。
 @param target 目标场景组路径或目标场景路径：

  - 当 `target`设置为目标场景组时，表示将指定场景移至其他场景组中，场景路径会发生改变，但是场景名称不变。
  - 当 `target`设置为目标场景路径时，表示改变指定场景在当前场景组的位置，场景路径和场景名都会发生改变。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/addPage"></a>

### `– addPage` [#-addpage]

<ApiSignature>

\- (void)addPage;

</ApiSignature>

```text
插入一个新页面
 该新页面会位于当前的页面的下一页
```

Declared in Room/WhiteRoom.h

<a id="//api/name/addPage:"></a>

### `– addPage:` [#-addpage-1]

<ApiSignature>

\- (void)addPage:(void(^ _Nullable)(BOOL success))completionHandler;

</ApiSignature>

```text
插入一个新页面
 该新页面会位于当前的页面的下一页
 @param completionHandler 回调
```

Declared in Room/WhiteRoom.h

<a id="//api/name/removePage:"></a>

### `– removePage:` [#-removepage]

<ApiSignature>

\- (void)removePage:(void(^ _Nullable)(BOOL success))completionHandler;

</ApiSignature>

```text
删除当前页面
 @param completionHandler 回调
```

Declared in Room/WhiteRoom.h

<a id="//api/name/removePage:completionHandler:"></a>

### `– removePage:completionHandler:` [#-removepagecompletionhandler]

<ApiSignature>

\- (void)removePage:(NSUInteger)index completionHandler:(void(^ _Nullable)(BOOL success))completionHandler;

</ApiSignature>

```text
删除指定页面
 @param index 页面下标
 @param completionHandler 回调
```

Declared in Room/WhiteRoom.h

<a id="//api/name/addPageWithScene:afterCurrentScene:"></a>

### `– addPageWithScene:afterCurrentScene:` [#-addpagewithsceneaftercurrentscene]

<ApiSignature>

\- (void)addPageWithScene:(WhiteScene * _Nullable)scene afterCurrentScene:(BOOL)afterCurrentScene;

</ApiSignature>

```text
插入一个新页面

*Note:**

 @param scene 新插入的场景对象
 @param afterCurrentScene 是否在当前页面之后。YES: 插入到当前页面之后。 NO: 在插入到最后一页的后面
```

Declared in Room/WhiteRoom.h

<a id="//api/name/addPageWithScene:afterCurrentScene:completionHandler:"></a>

### `– addPageWithScene:afterCurrentScene:completionHandler:` [#-addpagewithsceneaftercurrentscenecompletionhandler]

<ApiSignature>

\- (void)addPageWithScene:(WhiteScene * _Nullable)scene afterCurrentScene:(BOOL)afterCurrentScene completionHandler:(void(^ _Nullable)(BOOL success))completionHandler;

</ApiSignature>

```text
插入一个新页面

*Note:**

 @param scene 新插入的场景对象
 @param afterCurrentScene 是否在当前页面之后。YES: 插入到当前页面之后。 NO: 在插入到最后一页的后面
 @param completionHandler 回调
```

Declared in Room/WhiteRoom.h

<a id="//api/name/nextPage:"></a>

### `– nextPage:` [#-nextpage]

<ApiSignature>

\- (void)nextPage:(void(^ _Nullable)(BOOL success))completionHandler;

</ApiSignature>

```text
切换到下一页场景

*Note: **
 @param completionHandler 回调，success代表切换是否成功
```

Declared in Room/WhiteRoom.h

<a id="//api/name/prevPage:"></a>

### `– prevPage:` [#-prevpage]

<ApiSignature>

\- (void)prevPage:(void(^ _Nullable)(BOOL success))completionHandler;

</ApiSignature>

```text
切换到上一页场景

*Note: **
 @param completionHandler 回调，success代表切换是否成功
```

Declared in Room/WhiteRoom.h

<a id="//api/name/copy"></a>

### `– copy` [#-copy]

<ApiSignature>

\- (void)copy;

</ApiSignature>

```text
复制选中内容。

 该方法会将选中的内容存储到内存中，不会粘贴到白板中。

*Note:** 该方法仅当 [disableSerialization](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableSerialization:) 设为 `NO` 时生效。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/paste"></a>

### `– paste` [#-paste]

<ApiSignature>

\- (void)paste;

</ApiSignature>

```text
粘贴复制的内容。

 该方法会将 [copy](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/copy) 方法复制的内容粘贴到白板中（用户当前的视角中间）。
*Note:**

 - 该方法仅当 [disableSerialization](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableSerialization:) 设为 `NO` 时生效。
 - 多次调用该方法时，不能保证粘贴的内容每次都在用户当前的视角中间，可能会出现随机偏移。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/duplicate"></a>

### `– duplicate` [#-duplicate]

<ApiSignature>

\- (void)duplicate;

</ApiSignature>

```text
复制并粘贴选中的内容。

 该方法会将选中的内容复制并粘贴到白板中（用户当前的视角中间）。
*Note:**

 - 该方法仅当 [disableSerialization](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/disableSerialization:) 设为 `NO` 时生效。
 - 多次调用该方法时，不能保证粘贴的内容每次都在用户当前的视角中间，可能会出现随机偏移。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/deleteOperation"></a>

### `– deleteOperation` [#-deleteoperation]

<ApiSignature>

\- (void)deleteOperation;

</ApiSignature>

```text
删除选中内容。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disableSerialization:"></a>

### `– disableSerialization:` [#-disableserialization]

<ApiSignature>

\- (void)disableSerialization:(BOOL)disable;

</ApiSignature>

```text
开启/禁止本地序列化。

 设置 `disableSerialization(YES)` 后，以下方法将不生效：

 - `redo`
 - `undo`
 - `duplicate`
 - `copy`
 - `paste`

 @warning
 如果要设置 `disableSerialization(NO)`，必须确保同一房间内所有用户使用的 SDK 满足以下版本要求，否则会导致 app 客户端崩溃。

 - Web SDK 2.9.2 或之后版本
 - Android SDK 2.9.3 或之后版本
 - iOS SDK 2.9.3 或之后版本

 @param disable 是否禁止本地序列化：

 - `YES`：（默认）禁止开启本地序列化；
 - `NO`： 开启本地序列化，即可以对本地操作进行解析。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/redo"></a>

### `– redo` [#-redo]

<ApiSignature>

\- (void)redo;

</ApiSignature>

```text
重做，即回退撤销操作。

*Note:** 该方法仅当 [disableSerialization](#//api/name/disableSerialization:) 设为 `NO` 时生效。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/undo"></a>

### `– undo` [#-undo]

<ApiSignature>

\- (void)undo;

</ApiSignature>

```text
撤销上一步操作。

*Note:** 该方法仅当 [disableSerialization](#//api/name/disableSerialization:) 设为 `NO` 时生效。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getGlobalStateWithResult:"></a>

### `– getGlobalStateWithResult:` [#-getglobalstatewithresult]

<ApiSignature>

\- (void)getGlobalStateWithResult:(void (^) (WhiteGlobalState *state))result;

</ApiSignature>

```text
获取房间的全局状态。

*Note:**

 - 该方法为异步调用。
 - 调用 [setGlobalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room#//api/name/setGlobalState:) 方法后，可以立刻调用该方法。
 @param result 回调。返回房间的全局状态，详见 [GlobalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-global-state)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getMemberStateWithResult:"></a>

### `– getMemberStateWithResult:` [#-getmemberstatewithresult]

<ApiSignature>

\- (void)getMemberStateWithResult:(void (^) (WhiteMemberState *state))result;

</ApiSignature>

```text
获取当前的工具状态。
*Note:** 该方法为异步调用。调用 [setMemberState](#//api/name/setMemberState:) 方法后，可以立刻调用该方法。

 @param result 回调。返回当前的工具状态，详见 [MemberState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-member-state)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getRoomMembersWithResult:"></a>

### `– getRoomMembersWithResult:` [#-getroommemberswithresult]

<ApiSignature>

\- (void)getRoomMembersWithResult:(void (^) (NSArray&lt;WhiteRoomMember *&gt; *roomMembers))result;

</ApiSignature>

```text
获取实时房间用户列表。

*Note:**

 - 该方法为异步调用。
 - 房间的用户列表仅包含互动模式（具有读写权限）的用户，不包含订阅模式（只读权限）的用户。

 @param result 回调。返回当前房间的用户列表，详见 [WhiteRoomMember](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room-member)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getBroadcastStateWithResult:"></a>

### `– getBroadcastStateWithResult:` [#-getbroadcaststatewithresult]

<ApiSignature>

\- (void)getBroadcastStateWithResult:(void (^) (WhiteBroadcastState *state))result;

</ApiSignature>

```text
获取用户视角状态。

*Note:** 该方法为异步调用。

 @param result 回调。返回当前用户视角状态，详见 [WhiteBroadcastState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-broadcast-state)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getRoomPhaseWithResult:"></a>

### `– getRoomPhaseWithResult:` [#-getroomphasewithresult]

<ApiSignature>

\- (void)getRoomPhaseWithResult:(void (^) (WhiteRoomPhase phase))result;

</ApiSignature>

```text
获取房间连接状态。

*Note:** 该方法为异步调用。

 @param result 回调。返回当前房间连接状态，详见 [WhiteRoomPhase](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/constants/white-room-phase)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getZoomScaleWithResult:"></a>

### `– getZoomScaleWithResult:` [#-getzoomscalewithresult]

<ApiSignature>

\- (void)getZoomScaleWithResult:(void (^) (CGFloat scale))result;

</ApiSignature>

```text
获取用户当前的视角缩放比例。该方法为异步调用。

 @param result 回调。返回当前视角缩放比例。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getRoomStateWithResult:"></a>

### `– getRoomStateWithResult:` [#-getroomstatewithresult]

<ApiSignature>

\- (void)getRoomStateWithResult:(void (^) (WhiteRoomState *state))result;

</ApiSignature>

```text
获取当前房间状态。

*Note:** 该方法为异步调用。

 @param result 回调。返回当前房间状态，详见 [WhiteRoomState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-room-state)。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/disableWindowOperation:"></a>

### `– disableWindowOperation:` [#-disablewindowoperation]

<ApiSignature>

\- (void)disableWindowOperation:(BOOL)disable;

</ApiSignature>

Declared in Room/WhiteRoom.h

<a id="//api/name/addApp:completionHandler:"></a>

### `– addApp:completionHandler:` [#-addappcompletionhandler]

<ApiSignature>

\- (void)addApp:(WhiteAppParam *)appParams completionHandler:(void (^)(NSString * _Nullable appId))completionHandler;

</ApiSignature>

添加 App。lazy 模式或最小化状态可先返回 ID；eager 模式尝试等待 setup 并确认焦点，但 setup 异常可仅记录日志，仍可能返回 ID。返回 ID 不保证初始化或渲染成功；创建失败或未取得 ID 的结果按本端错误/空值接口处理。originSize 写入 attributes.originSize。

```text
添加窗口
@param appParams app 类型以及配置内容

completionHandler 会在 Box 创建及本次焦点请求处理后调用。请求在 pending 中被取代时可返回 appId；setup 失败或超时不单独决定返回值。创建失败或应提交的焦点未提交时返回 nil。
@warning 多次插入同一个 ppt 时，插入会失败，返回的 appId 为 nil 。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/fitOriginSizeAndCamera"></a>

### `– fitOriginSizeAndCamera` [#-fitoriginsizeandcamera]

<ApiSignature>

\- (void)fitOriginSizeAndCamera;

</ApiSignature>

恢复 MainView 的参考尺寸和初始相机，不修改 Slide/Presentation 的 App 参考尺寸。

```text
恢复 MainView 的 originSize 与原始相机状态。未配置 originSize 时不执行操作。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/closeApp:completionHandler:"></a>

### `– closeApp:completionHandler:` [#-closeappcompletionhandler]

<ApiSignature>

\- (void)closeApp:(NSString *)appId completionHandler:(void (^)(void))completionHandler;

</ApiSignature>

```text
关闭窗口
该方法仅在多窗口下有效, 无论appId是否有效都会触发回调

@param appId 添加app时返回的id
```

Declared in Room/WhiteRoom.h

<a id="//api/name/focusApp:"></a>

### `– focusApp:` [#-focusapp]

<ApiSignature>

\- (void)focusApp:(NSString *)appId;

</ApiSignature>

可等待的布尔值表示共享 focus、本端 Box 焦点和 zIndex 已提交；不表示 App setup 或首帧完成。

```text
切换聚焦窗口
该方法仅在多窗口下有效

@param appId 添加app时返回的id
```

Declared in Room/WhiteRoom.h

<a id="//api/name/focusApp:completionHandler:"></a>

### `– focusApp:completionHandler:` [#-focusappcompletionhandler]

<ApiSignature>

\- (void)focusApp:(NSString *)appId completionHandler:(void (^ _Nullable)(BOOL committed))completionHandler;

</ApiSignature>

可等待的布尔值表示共享 focus、本端 Box 焦点和 zIndex 已提交；不表示 App setup 或首帧完成。

```text
切换聚焦窗口，并在焦点真正提交后返回结果。
Lazy 模式会等待目标 App setup 和 focus 提交；非 Lazy 模式保持原同步切换行为并立即返回 YES。

@param appId 添加 app 时返回的 id
@param completionHandler YES 表示房间 focus 与本地 Box 焦点、zIndex 已提交；NO 表示请求被取代或状态未提交。setup 失败或超时仅记录日志，不决定返回值
```

Declared in Room/WhiteRoom.h

<a id="//api/name/queryAllAppsWithCompletionHandler:"></a>

### `– queryAllAppsWithCompletionHandler:` [#-queryallappswithcompletionhandler]

<ApiSignature>

\- (void)queryAllAppsWithCompletionHandler:(void (^)(NSDictionary&lt;NSString *, WhiteAppSyncAttributes *&gt; *apps, NSError * _Nullable error))completionHandler;

</ApiSignature>

```text
查询所有 App 信息
 该方法仅在多窗口下有效
@param completionHandler 查询结果回调
```

Declared in Room/WhiteRoom.h

<a id="//api/name/queryApp:completionHandler:"></a>

### `– queryApp:completionHandler:` [#-queryappcompletionhandler]

<ApiSignature>

\- (void)queryApp:(NSString *)appId completionHandler:(void (^)(WhiteAppSyncAttributes *appParam, NSError * _Nullable error))completionHandler;

</ApiSignature>

```text
查询 App 信息
 该方法仅在多窗口下有效
@param appId 添加app时返回的id
@param completionHandler 查询结果回调
```

Declared in Room/WhiteRoom.h

<a id="//api/name/dispatchDocsEvent:options:completionHandler:"></a>

### `– dispatchDocsEvent:options:completionHandler:` [#-dispatchdocseventoptionscompletionhandler]

<ApiSignature>

\- (void)dispatchDocsEvent:(WhiteWindowDocsEventKey)docsEvent options:(WhiteWindowDocsEventOptions * _Nullable)options completionHandler:(void (^)(WhiteDispatchDocsEventResult *result))completionHandler;

</ApiSignature>

统一控制 MainView、DocsViewer、Slide、Presentation。target 省略时跟随焦点，或指定 mainView/appId；page 从 1 开始，scale=1 为适配尺寸。accepted 表示命令接收，拒绝时检查 reason/message；不保证渲染完成。

```text
派发文档事件
在多窗口模式下，该方法可以用来操作当前聚焦的文档窗口。

@param docsEvent 事件类型。
@param options 可选事件参数。
@params completionHandler 返回命令是否接受；拒绝时包含稳定 reason 和可读 message。

@warning 该方法只有在文档视图加载完毕时才能调用。不支持多次连续调用，只有当当前的转场动画完毕之后才能进行下一次调用。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/querySlidePageStateWithCompletionHandler:"></a>

### `– querySlidePageStateWithCompletionHandler:` [#-queryslidepagestatewithcompletionhandler]

<ApiSignature>

\- (void)querySlidePageStateWithCompletionHandler:(void (^)(WhiteSlidePageState * _Nullable pageState, NSError * _Nullable error))completionHandler;

</ApiSignature>

```text
查询当前聚焦 SlideApp 的页面状态。页码从 1 开始。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/querySlidePageState:completionHandler:"></a>

### `– querySlidePageState:completionHandler:` [#-queryslidepagestatecompletionhandler]

<ApiSignature>

\- (void)querySlidePageState:(NSString * _Nullable)appId completionHandler:(void (^)(WhiteSlidePageState * _Nullable pageState, NSError * _Nullable error))completionHandler;

</ApiSignature>

查询当前焦点或指定 Slide App 的页码和总页数，页码从 1 开始。

```text
查询指定 SlideApp 的页面状态。页码从 1 开始。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getPageState:completionHandler:"></a>

### `– getPageState:completionHandler:` [#-getpagestatecompletionhandler]

<ApiSignature>

\- (void)getPageState:(WhiteWindowPageStateOptions * _Nullable)options completionHandler:(void (^)(WhiteUnifiedPageState * _Nullable pageState, NSError * _Nullable error))completionHandler;

</ApiSignature>

查询统一页面状态，返回 target、可选 appId、1-based page/pageCount、可选相对 scale。状态 target 为 mainView/DocsViewer/Slide/Presentation。

```text
查询当前可观察的统一页面状态。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/deleteOpertion"></a>

### `– deleteOpertion` [#-deleteopertion]

<ApiSignature>

\- (void)deleteOpertion DEPRECATED_MSG_ATTRIBUTE("use deleteOperation");

</ApiSignature>

Declared in Room/WhiteRoom.h

<a id="//api/name/disableOperations:"></a>

### `– disableOperations:` [#-disableoperations]

<ApiSignature>

\- (void)disableOperations:(BOOL)disable DEPRECATED_MSG_ATTRIBUTE("use disableDeviceInputs and disableCameraTransform");

</ApiSignature>

```text
@deprecated 该方法已废弃，请使用 [disableDeviceInputs](#//api/name/disableDeviceInputs:) 和 [disableCameraTransform](#//api/name/disableCameraTransform:)。

 禁止操作。
 @param disable 是否禁止操作，YES 为禁止。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/zoomChange:"></a>

### `– zoomChange:` [#-zoomchange]

<ApiSignature>

\- (void)zoomChange:(CGFloat)scale DEPRECATED_MSG_ATTRIBUTE("use moveCamera:");

</ApiSignature>

```text
@deprecated 该方法已废弃，请使用 [moveCamera](/zh-CN/api-reference/whiteboard/whiteboard-sdk/ios/classes/white-displayer#//api/name/moveCamera:)。

 缩小放大白板。
 @param scale 相对于原始大小的比例。
```

Declared in Room/WhiteRoom.h

<a id="//api/name/getPptImagesWithResult:"></a>

### `– getPptImagesWithResult:` [#-getpptimageswithresult]

<ApiSignature>

\- (void)getPptImagesWithResult:(void (^) (NSArray&lt;NSString *&gt; *pptPages))result DEPRECATED_MSG_ATTRIBUTE("use getScenesWithResult:");

</ApiSignature>

```text
@deprecated 该方法已废弃，请使用 [getScenesWithResult](#//api/name/getScenesWithResult:)。

 获取所有 ppt 图片。
 @param result 回调。返回所有 ppt 图片的地址。
```

Declared in Room/WhiteRoom.h
