Post

Replies

Boosts

Views

Activity

Reply to WKWebview paste with keyboard paste text twice.
This is still a problem in the latest version of macOS monterey (v12.2). I created a JS solution which overrides the default pasting logic for macOS. Add this JS code as a userscript into your WKWebView user content controller. Here's the gist link for my code. I have also attached the code down below: const inputs = document.querySelectorAll("input[type=text]") let alreadyPasted = false for (const input of inputs) { input.addEventListener("paste", (event) => { event.preventDefault() // Don't call paste event two times in a single paste command if (alreadyPasted) { alreadyPasted = false return } const paste = (event.clipboardData || window.clipboardData).getData("text") const beginningString = input.value.substring(0, input.selectionStart) + paste input.value = beginningString + input.value.substring(input.selectionEnd, input.value.length) alreadyPasted = true input.setSelectionRange(beginningString.length, beginningString.length) input.scrollLeft = input.scrollWidth }) } Here's a code example to reproduce the double paste bug with MacCatalyst (it doesn't matter if I use SwiftUI, I just like it more) struct ContentView: View {      var body: some View {     WebView(url: URL(string: "https://google.com")!)   } } struct WebView: UIViewRepresentable {   let url: URL   func makeUIView(context: Context) -> WKWebView {     let webView = WKWebView()           return webView   }   func updateUIView(_ uiView: WKWebView, context: Context) {   } } I hope this helps someone out there :)
Feb ’22
Reply to Crash on MacOS(M1 series): uncaught exception 'NSInternalInconsistencyException', reason:Invalid parameter not satisfying: <SPRoundedWindow: 0x139fbbab0>. "frame=!CGRectIsNull(frame)
After looking at Caleb Jones's comment, I found that disabling autocorrection on the textfield in swiftui stops crashes entirely. The main issue is probably because MacCatalyst doesn't support predictive text, but iOS/iPadOS does due to the virtual keyboard. Disabling autocorrection disables predictive text. Here's my code with the fix: import SwiftUI import WebKit struct ContentView: View {   @State var textObject: String = ""       var body: some View {     ZStack {       WebView(url: URL(string: "https://google.com")!)                         TextField("", text: $textObject)         .background(           Rectangle()             .foregroundColor(.black)         )         .disableAutocorrection(true)     }   } } struct WebView: UIViewRepresentable {      var url: URL     func makeUIView(context: Context) -> WKWebView {     return WKWebView()   }     func updateUIView(_ webView: WKWebView, context: Context) {     let request = URLRequest(url: url)     webView.load(request)   } }
Jan ’22
Reply to Crash on MacOS(M1 series): uncaught exception 'NSInternalInconsistencyException', reason:Invalid parameter not satisfying: <SPRoundedWindow: 0x139fbbab0>. "frame=!CGRectIsNull(frame)
Hi there, I am also having the same problem with my MacCatalyst app on MacOS monterey 12.1 (13-inch 2021 M1 MBP) Error message: libc++abi: terminating with uncaught exception of type NSException *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: <SPRoundedWindow: 0x126774250>. "frame=!CGRectIsNull(frame)"' terminating with uncaught exception of type NSException I was able to create a test app which reproduces the crash every time. Here's the code for it (SwiftUI). import SwiftUI import WebKit struct ContentView: View {   @State var textObject: String = ""       var body: some View {     ZStack {       WebView(url: URL(string: "https://google.com")!)       TextField("", text: $textObject)         .background(           Rectangle()             .foregroundColor(.black)         )     }   } } struct WebView: UIViewRepresentable {      var url: URL     func makeUIView(context: Context) -> WKWebView {     return WKWebView()   }     func updateUIView(_ webView: WKWebView, context: Context) {     let request = URLRequest(url: url)     webView.load(request)   } } To reproduce the crash: Launch the app on a mac Click in the textfield Click on the google search bar The crash should occur The same issue also silently occurs when running the app in rosetta but the app doesn't terminate. Here's my crash log down below: 0 CoreFoundation 0x00000001848001cc __exceptionPreprocess + 240 1 libobjc.A.dylib 0x00000001845517b8 objc_exception_throw + 60 2 Foundation 0x000000018576e840 -[NSMutableDictionary(NSMutableDictionary) initWithContentsOfFile:] + 0 3 AppKit 0x0000000187328f20 -[NSWindow _reallySetFrame:] + 904 4 AppKit 0x00000001873287d8 -[NSWindow _oldPlaceWindow:fromServer:] + 228 5 AppKit 0x00000001873277f8 -[NSWindow _setFrameCommon:display:fromServer:] + 2200 6 SafariPlatformSupport 0x00000001aac63104 __85-[SPSafariPlatformSupport displayOTPAutoFillRelativeToRect:ofView:completionHandler:]_block_invoke + 300 7 SafariPlatformSupport 0x00000001aac62f8c -[SPSafariPlatformSupport displayOTPAutoFillRelativeToRect:ofView:completionHandler:] + 228 8 UIKitCore 0x00000001ac7317a0 -[UIKeyboardImpl generateAutofillCandidateByAddingTask:] + 948 9 UIKitCore 0x00000001ac73b8d0 -[UIKeyboardImpl setDelegate:force:] + 6248 10 UIKitCore 0x00000001ac41fad4 -[UIKeyboardSceneDelegate _reloadInputViewsForKeyWindowSceneResponder:] + 2080 11 UIKitCore 0x00000001ac41f288 -[UIKeyboardSceneDelegate _reloadInputViewsForResponder:] + 164 12 UIKitCore 0x00000001abd918a0 -[UIResponder(UIResponderInputViewAdditions) reloadInputViews] + 132 13 UIKitCore 0x00000001abd3a298 -[UIResponder becomeFirstResponder] + 856 14 UIKit 0x0000000202830aa4 -[UITextInputUIResponderAccessibility becomeFirstResponder] + 52 15 UIKitCore 0x00000001abd6a100 -[UIView(Hierarchy) becomeFirstResponder] + 176 16 WebKit 0x00000001bd66c5c0 -[WKContentView(WKInteraction) becomeFirstResponderForWebView] + 152 17 WebKit 0x00000001bd246768 -[WKWebView(WKViewInternalIOS) becomeFirstResponder] + 148 18 WebKit 0x00000001bd67f88c -[WKContentView(WKInteraction) _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:] + 1840 19 WebKit 0x00000001bd381ea0 _ZN6WebKit12WebPageProxy15elementDidFocusERKNS_25FocusedElementInformationEbbN3WTF9OptionSetIN7WebCore13ActivityState4FlagEEERKNS_8UserDataE + 216 20 WebKit 0x00000001bd5f66b8 _ZN6WebKit12WebPageProxy17didReceiveMessageERN3IPC10ConnectionERNS1_7DecoderE + 61472 21 WebKit 0x00000001bcfcc5cc _ZN3IPC18MessageReceiverMap15dispatchMessageERNS_10ConnectionERNS_7DecoderE + 272 22 WebKit 0x00000001bd35a284 _ZN6WebKit15WebProcessProxy17didReceiveMessageERN3IPC10ConnectionERNS1_7DecoderE + 40 23 WebKit 0x00000001bcfaeb4c _ZN3IPC10Connection15dispatchMessageENSt3__110unique_ptrINS_7DecoderENS1_14default_deleteIS3_EEEE + 808 24 WebKit 0x00000001bcfae15c _ZN3IPC10Connection24dispatchIncomingMessagesEv + 508 25 JavaScriptCore 0x00000001bc5278d0 _ZN3WTF7RunLoop11performWorkEv + 292 26 JavaScriptCore 0x00000001bc528a40 _ZN3WTF7RunLoop11performWorkEPv + 36 27 CoreFoundation 0x0000000184780c5c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 28 CoreFoundation 0x0000000184780ba8 __CFRunLoopDoSource0 + 208 29 CoreFoundation 0x0000000184780894 __CFRunLoopDoSources0 + 268 30 CoreFoundation 0x000000018477f208 __CFRunLoopRun + 820 31 CoreFoundation 0x000000018477e734 CFRunLoopRunSpecific + 600 32 HIToolbox 0x000000018d310f68 RunCurrentEventLoopInMode + 292 33 HIToolbox 0x000000018d310cdc ReceiveNextEventCommon + 552 34 HIToolbox 0x000000018d310a9c _BlockUntilNextEventMatchingListInModeWithFilter + 72 35 AppKit 0x00000001872d4ce0 _DPSNextEvent + 844 36 AppKit 0x00000001872d3584 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1332 37 AppKit 0x00000001872c55a4 -[NSApplication run] + 596 38 AppKit 0x0000000187296c78 NSApplicationMain + 1064 39 AppKit 0x000000018756d084 +[NSWindow _savedFrameFromString:] + 0 40 UIKitMacHelper 0x0000000199c7d9ac UINSApplicationMain + 1280 41 UIKitCore 0x00000001abc0ab28 UIApplicationMain + 164 42 SwiftUI 0x00000001c0fce8b0 $s7SwiftUI17KitRendererCommon33_ACC2C5639A7D76F611E170E831FCA491LLys5NeverOyXlXpFAESpySpys4Int8VGSgGXEfU_ + 164 43 SwiftUI 0x00000001c0fce808 $s7SwiftUI6runAppys5NeverOxAA0D0RzlF + 252 44 SwiftUI 0x00000001c08f54cc $s7SwiftUI3AppPAAE4mainyyFZ + 128 45 TestingGround 0x000000010056d634 $s13TestingGround0aB3AppV5$mainyyFZ + 40 46 TestingGround 0x000000010056d6d4 main + 12 47 dyld 0x00000001015a50f4 start + 520
Jan ’22