fix:issue #210
This commit is contained in:
@@ -191,9 +191,12 @@ namespace Ink_Canvas
|
|||||||
RefreshBlackBoardSidePageListView();
|
RefreshBlackBoardSidePageListView();
|
||||||
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderLeftPageListView);
|
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderLeftPageListView);
|
||||||
await Task.Delay(1);
|
await Task.Delay(1);
|
||||||
ScrollViewToVerticalTop(
|
var leftContainer = BlackBoardLeftSidePageListView.ItemContainerGenerator.ContainerFromIndex(
|
||||||
(ListViewItem)BlackBoardLeftSidePageListView.ItemContainerGenerator.ContainerFromIndex(
|
CurrentWhiteboardIndex - 1) as ListViewItem;
|
||||||
CurrentWhiteboardIndex - 1), BlackBoardLeftSidePageListScrollViewer);
|
if (leftContainer != null)
|
||||||
|
{
|
||||||
|
ScrollViewToVerticalTop(leftContainer, BlackBoardLeftSidePageListScrollViewer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sender == BtnRightPageListWB)
|
else if (sender == BtnRightPageListWB)
|
||||||
@@ -208,9 +211,12 @@ namespace Ink_Canvas
|
|||||||
RefreshBlackBoardSidePageListView();
|
RefreshBlackBoardSidePageListView();
|
||||||
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderRightPageListView);
|
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderRightPageListView);
|
||||||
await Task.Delay(1);
|
await Task.Delay(1);
|
||||||
ScrollViewToVerticalTop(
|
var rightContainer = BlackBoardRightSidePageListView.ItemContainerGenerator.ContainerFromIndex(
|
||||||
(ListViewItem)BlackBoardRightSidePageListView.ItemContainerGenerator.ContainerFromIndex(
|
CurrentWhiteboardIndex - 1) as ListViewItem;
|
||||||
CurrentWhiteboardIndex - 1), BlackBoardRightSidePageListScrollViewer);
|
if (rightContainer != null)
|
||||||
|
{
|
||||||
|
ScrollViewToVerticalTop(rightContainer, BlackBoardRightSidePageListScrollViewer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2134,6 +2134,11 @@ namespace Ink_Canvas
|
|||||||
SaveStrokes();
|
SaveStrokes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isAlreadyEraser)
|
||||||
|
{
|
||||||
|
ResetTouchStates();
|
||||||
|
}
|
||||||
|
|
||||||
// 启用新的高级橡皮擦系统
|
// 启用新的高级橡皮擦系统
|
||||||
EnableAdvancedEraserSystem();
|
EnableAdvancedEraserSystem();
|
||||||
|
|
||||||
@@ -2732,6 +2737,61 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
if (isSingleFingerDragMode) BtnFingerDragMode_Click(BtnFingerDragMode, null);
|
if (isSingleFingerDragMode) BtnFingerDragMode_Click(BtnFingerDragMode, null);
|
||||||
isLongPressSelected = false;
|
isLongPressSelected = false;
|
||||||
|
|
||||||
|
ResetTouchStates();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重置所有触摸相关状态,
|
||||||
|
/// </summary>
|
||||||
|
private void ResetTouchStates()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 清空触摸点计数器
|
||||||
|
dec.Clear();
|
||||||
|
|
||||||
|
// 重置多指触摸模式状态
|
||||||
|
if (isInMultiTouchMode)
|
||||||
|
{
|
||||||
|
isInMultiTouchMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置单指拖动模式状态
|
||||||
|
if (isSingleFingerDragMode)
|
||||||
|
{
|
||||||
|
isSingleFingerDragMode = false;
|
||||||
|
if (BtnFingerDragMode != null)
|
||||||
|
{
|
||||||
|
BtnFingerDragMode.Content = "单指\n拖动";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置手掌擦状态
|
||||||
|
if (isPalmEraserActive)
|
||||||
|
{
|
||||||
|
isPalmEraserActive = false;
|
||||||
|
palmEraserTouchDownHandled = false;
|
||||||
|
palmEraserTouchIds.Clear();
|
||||||
|
StopPalmEraserRecoveryTimer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保触摸事件能正常响应
|
||||||
|
inkCanvas.IsHitTestVisible = true;
|
||||||
|
inkCanvas.IsManipulationEnabled = true;
|
||||||
|
|
||||||
|
// 释放所有触摸捕获
|
||||||
|
inkCanvas.ReleaseAllTouchCaptures();
|
||||||
|
|
||||||
|
// 恢复UI元素的触摸响应
|
||||||
|
ViewboxFloatingBar.IsHitTestVisible = true;
|
||||||
|
BlackboardUIGridForInkReplay.IsHitTestVisible = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"重置触摸状态失败: {ex.Message}", LogHelper.LogType.Error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BtnHideControl_Click(object sender, RoutedEventArgs e)
|
private void BtnHideControl_Click(object sender, RoutedEventArgs e)
|
||||||
|
|||||||
@@ -68,9 +68,20 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
public static void ScrollViewToVerticalTop(FrameworkElement element, ScrollViewer scrollViewer)
|
public static void ScrollViewToVerticalTop(FrameworkElement element, ScrollViewer scrollViewer)
|
||||||
{
|
{
|
||||||
|
if (element == null || scrollViewer == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var scrollViewerOffset = scrollViewer.VerticalOffset;
|
var scrollViewerOffset = scrollViewer.VerticalOffset;
|
||||||
var point = new Point(0, scrollViewerOffset);
|
var point = new Point(0, scrollViewerOffset);
|
||||||
var tarPos = element.TransformToVisual(scrollViewer).Transform(point);
|
var transform = element.TransformToVisual(scrollViewer);
|
||||||
|
if (transform == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tarPos = transform.Transform(point);
|
||||||
scrollViewer.ScrollToVerticalOffset(tarPos.Y);
|
scrollViewer.ScrollToVerticalOffset(tarPos.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -968,6 +968,12 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
// 修复:允许单指拖动选中的墨迹,即使禁用了多指手势
|
// 修复:允许单指拖动选中的墨迹,即使禁用了多指手势
|
||||||
if (isInMultiTouchMode) return;
|
if (isInMultiTouchMode) return;
|
||||||
|
|
||||||
|
if (dec.Count == 0 && (isSingleFingerDragMode || isInMultiTouchMode))
|
||||||
|
{
|
||||||
|
ResetTouchStates();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 如果是单指拖动选中的墨迹,允许处理
|
// 如果是单指拖动选中的墨迹,允许处理
|
||||||
if (dec.Count == 1 && inkCanvas.GetSelectedStrokes().Count > 0)
|
if (dec.Count == 1 && inkCanvas.GetSelectedStrokes().Count > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user