Repository navigation
fix: iOS版で長押しの文字選択・リンクのプレビュー・画面全体の拡大を抑える - #123
Merged
Merged
Conversation
iOS版の編集画面で、見出し・ラベル・ボタン・リンクの長押しで出る文字選択と メニュー、リンクのプレビュー、盤面の外のピンチによる画面全体の拡大を抑える。 入力欄の文字選択・コピーは残す。Web版は変えず、使い方ページの文字選択と 拡大も残す。 Refs #81 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
K0mork
commented
Oct 6, 2026
K0mork
left a comment
Owner
Author
There was a problem hiding this comment.
レビュー(CI確認済み・マージはしていません)
CI(cd5a115、CI and deploy Pages)
- 成功:
changes、app_store_docs、ios_web、ios (iPhone 17)、ios (iPad (A16))、app_update (iPhone 17)、app_update (iPad (A16))、release_archive、ci-gate。CodeQLも成功。 - スキップ:
web、deploy、smoke(iOSだけの変更なので想定どおり)。 - iOS 26.5 Simulator(Xcode 26.6)の両端末で、新しい
testEditorChromeIgnoresPageZoomAndTextSelection・testGuideExternalLinkShowsNoPreviewと、追記したtestDocumentDialogRemainsUsableAfterFocusingInputが実行され、再試行なしで成功しました。関係する既存のtestAccessibilityExtraExtraExtraLargeKeepsPrimaryFlowsUsable・testTwoFingerGestureDoesNotDrawOnBoard・testGuideNavigationReturnsToUsableEditorも成功しています。
良い点
- 差分は
ios/とdocs/dev-log/だけで、Web版(ルートのindex.htmlはmaximum-scale=5のまま)と共通CSSには影響しません。 - 入力欄は
user-select: text・-webkit-touch-callout: defaultで戻しており、入力欄のダブルタップで選択メニューが出ることをUIテストで確かめています。 - 共通CSSのフォントサイズはpx指定が無く、iOS版の
:rootのfont: -apple-system-bodyに追従するので、user-scalable=noにしてもDynamic Typeで文字を大きくできます(AX XXXLのUIテストもCIで成功)。 - 使い方ページは別のHTML(インラインのstyle、viewportに
maximum-scaleなし)なので、文字選択とピンチでの拡大が残るという説明と合っています。 Closes #81、ラベルbug、docs/dev-log/の書式・ファイル名も規約どおりです。差分・本文・コミットメッセージに機密情報は見当たりません。
指摘
- (中・完了条件)端末の「ズーム」(アクセシビリティの拡大表示)は未確認です。 Issueの完了条件「Dynamic Typeとアクセシビリティの拡大表示で、文字が読める大きさにできることを確かめる」のうち、Dynamic Typeはスクリーンショットで確かめていますが、ズームは「viewportの影響を受けないシステムの機能」という理由づけだけです(PR本文とログには未確認と正直に書かれています)。Issueを閉じる前に、Simulatorの設定(アクセシビリティ > ズーム)か実機で一度確かめて記録するか、理由づけで十分とするかを判断してください。
- (低)
testGuideExternalLinkShowsNoPreviewの検出条件が狭いです。 プレビューの有無をapp.collectionViewsの存在だけで見ており、対策前に検出できることを確かめたのはiOS 27.0と18.2で、CIのiOS 26.5では未確認です。OSによってプレビューやリンクのメニューの公開のされ方が変わると、対策が外れても成功してしまうおそれがあります。app.menuItems・app.sheetsも出ないことを足すと安心です。またapp.state == .runningForegroundは、長押しでSafariへ移らない限り常に成り立つので、検出力はあまりありません。 - (低・文書)
WEB_SYNC.mdとログの記述がCSSと少し違います。 文書は「入力欄(input・textarea)だけ元に戻し」ですが、CSSは[contenteditable]も戻しています。今はcontenteditableの要素が無いので実害はありませんが、記述を揃えるとよいです。 - (情報)盤面のピンチ拡大が引き続き効くことは、テストでは確かめていません。 盤面は
touch-action: noneとpointerイベントで拡大を扱っているので、viewportの変更の影響は受けないはずです。ただ、既存のtestTwoFingerGestureDoesNotDrawOnBoardが確かめているのは「2本指で記号が入らないこと」だけです。ログの「盤面のピンチ(盤面の拡大)は従来どおり」の根拠は、目視だったのか理屈だったのかを書いておくと、後から追えます。TestFlightでの確認項目に入れておくのも一案です。 - (情報) エラーやトーストの文言も選択・コピーできなくなります。問い合わせのときに文言をコピーしたい場面がありえますが、編集画面としては妥当な判断だと考えます。
1は完了条件にかかわるので、マージの前に判断が必要です。2〜5はマージを止めるものではありません。
レビュー対応。使い方ページの外部リンクの長押しで、プレビューのコレクション ビューだけでなくメニュー項目・シート・リンク用の操作も出ないことを確かめ、 検出力の無いアプリ状態の確認を外す。2本指ジェスチャのテストに、盤面の ピンチで盤面が拡大されることの確認を足す。WEB_SYNC.mdと開発ログの文字選択の 記述をCSSに揃え、端末の「ズーム」をSimulatorで確かめられなかった経緯を記録する。 Refs #81 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
レビュー対応(d3eca91)
手元ではiPhone 16(iOS 18.2)のSimulatorで変えたテストを含む4件と、iOS Webのtsc・vitestを実行し、すべて成功しました。 CI(d3eca91)
マージはしていません。 |
This was referenced Oct 7, 2026
Owner
Author
デプロイ確認
途中の このPRについてこのPRは iOS だけの変更なので、Pages の配信には影響しません。この run で iOS のジョブ( |
This was referenced Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
iOS版の編集画面で、
WKWebView由来のWebページ特有の挙動(長押しの文字選択とメニュー、リンクのプレビュー、盤面の外のピンチによる画面全体の拡大)を抑えます。編み図名などの入力欄では、文字の選択・コピー・貼り付けを従来どおりできます。Refs #81
端末の「ズーム」(アクセシビリティの拡大表示)はSimulatorで確かめられなかったため、Issueは閉じずに実機での確認として残します(下の「レビュー対応」を参照)。
Simulatorでの観察結果(対策前)
iPhone 18 Pro(iOS 27.0)とiPad 10(iOS 18.2)で、調査用の一時テスト(コミットしていません)から操作し、画面とアクセシビリティツリーを記録しました。
変更内容
ios/App/WebViewContainer.swift:webView.allowsLinkPreview = false。外部リンクはタップされたときだけ従来どおりSafariで開きます。ios/Web/src/styles.css:bodyで文字選択と長押しのメニュー(user-select・-webkit-touch-callout)を止め、input・textarea・contenteditableだけ元に戻しました。ios/Web/index.html: viewportをwidth=device-width, initial-scale=1, maximum-scale=1, user-scalable=noにしました。盤面の拡大は盤面自身のピンチ処理なので影響しません。ios/docs/WEB_SYNC.md: Web版との差分として記録しました。対策後は、見出し・ラベル・ボタン・リンクを長押ししても文字選択とメニューが出ません。外部リンクを長押ししてもプレビューは出ません(リンクの文字が選択されるだけで、Safariは開きません)。ピンチやダブルタップで画面は拡大されません。入力欄では、ダブルタップで「Cut」「Copy」「Paste」などが出ます。
決めたこと
packages/editor-core/styles/base.css)にも入れていません。allowsLinkPreviewで両ページとも出しません。font: -apple-system-body)と端末の「ズーム」が担います。テスト
testEditorChromeIgnoresPageZoomAndTextSelection(新規): 見出しとツールバーでピンチし、見出しをダブルタップしても、見出しと「保存」の位置・大きさが変わらない。見出し・ラベル(「色」)・リンク(「使い方」)・ボタン(「描く」)の長押しでメニューが出ない。testGuideExternalLinkShowsNoPreview(新規): 使い方ページの外部リンクの長押しで、プレビューのコレクションビュー・メニュー項目・シート・リンク用の操作(「Open Link」など)のどれも出ず、使い方ページのまま。testTwoFingerGestureDoesNotDrawOnBoard(追記): 盤面のピンチの前後で盤面の画像が変わる(盤面の拡大が効く)。testDocumentDialogRemainsUsableAfterFocusingInput(追記): 入力欄のダブルタップで、選択・コピーのメニューが出る。ios/Web/src/webViewBehaviors.test.ts(新規): viewportの設定。実行した確認
xcodegen generate、アプリとテストのビルド(手元はXcode 27.0)testDocumentDialogRemainsUsableAfterFocusingInputを実行し、すべて成功testGuideNavigationReturnsToUsableEditor、testTwoFingerGestureDoesNotDrawOnBoard、testPromptDialogIgnoresBackgroundTaps、testUndoAndRedoRestoreBoardEdits、testAccessibilityExtraExtraExtraLargeKeepsPrimaryFlowsUsable)も成功tsc -p tsconfig.app.json --noEmit、vitest run --config vite.config.ts(9件成功)npm run typecheck、npm test(159件成功)実行していない確認
npm run build、npm run check:dist、npm run test:e2e: Web版のファイルと共通コードを変えていないためレビュー対応
com.apple.AccessibilityのZoomTouchEnabled)をオンにして再起動し、XCUITestのtap(withNumberOfTaps: 2, numberOfTouches: 3)で3本指ダブルタップを送ろうとしたが、対象をアプリ・ウインドウ・WebViewのどれにしても「unable to compute coordinates for gesture」で送れなかった。testGuideExternalLinkShowsNoPreviewの判定を、メニュー項目・シート・リンク用の操作の文言にも広げ、検出力の無かったapp.state == .runningForegroundの確認を外しました。allowsLinkPreview = falseを一時的に外したビルドで、iPhone 16(iOS 18.2)でこのテストが失敗することを確かめてから戻しました。testTwoFingerGestureDoesNotDrawOnBoardに、盤面のピンチで盤面の画像が変わることの確認を足しました。盤面のピンチ処理を一時的に止めたビルドで失敗することを確かめてから戻しました。ios/docs/WEB_SYNC.mdと開発ログの、文字選択を戻す対象の記述をCSS(input・textarea・[contenteditable])に揃えました。xcodegen generate、アプリとテストのビルド。iPhone 16(iOS 18.2)のSimulatorで、testGuideExternalLinkShowsNoPreview、testTwoFingerGestureDoesNotDrawOnBoard、testEditorChromeIgnoresPageZoomAndTextSelection、testDocumentDialogRemainsUsableAfterFocusingInputがすべて成功。iOS Webのtscとvitest(9件成功)。補足
🤖 Generated with Claude Code