Post not yet marked as solved
Hi everyone!
Anyone else seeing crashes like this:
Fatal Exception: NSInvalidArgumentException. -[_UISnapshotWindow actualSceneBounds]: unrecognized selector sent to instance
I'm encountering a crash within 3-4 seconds of launching my iOS app specifically on devices running iOS 14. The crash log indicates an NSInvalidArgumentException with the following message:
`Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 0x129754 __exceptionPreprocess
1 libobjc.A.dylib 0x287a8 objc_exception_throw
2 CoreFoundation 0x2cc3c -[NSOrderedSet initWithSet:copyItems:]
3 UIKitCore 0xc01ea0 -[UIResponder doesNotRecognizeSelector:]
4 CoreFoundation 0x12c2ac ___forwarding___
5 CoreFoundation 0x12e5b0 _CF_forwarding_prep_0
6 UIKitCore 0xa918cc -[UIUndoGestureInteraction didMoveToView:]
7 UIKitCore 0x11099b4 _setInteractionView
8 UIKitCore 0x11098bc -[UIView(Dragging) addInteraction:]
9 UIKitCore 0xe9d678 -[UIEditingOverlayViewController _addInteractions]
10 UIKitCore 0x4a73e4 -[UIViewController _setViewAppearState:isAnimating:]
11 UIKitCore 0x4a7910 __52-[UIViewController _setViewAppearState:isAnimating:]_block_invoke
12 CoreFoundation 0xa75bc __NSARRAY_IS_CALLING_OUT_TO_A_BLOCK__
13 CoreFoundation 0x2410 -[__NSArrayI enumerateObjectsWithOptions:usingBlock:]
14 UIKitCore 0x4a75ac -[UIViewController _setViewAppearState:isAnimating:]
15 UIKitCore 0x4a7dc0 -[UIViewController __viewDidAppear:]
16 UIKitCore 0x4a9964 __64-[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]_block_invoke
17 UIKitCore 0x4a873c -[UIViewController _executeAfterAppearanceBlock]
18 UIKitCore 0xbda7c4 _runAfterCACommitDeferredBlocks
19 UIKitCore 0xbc903c _cleanUpAfterCAFlushAndRunDeferredBlocks
20 UIKitCore 0xbfcf10 _afterCACommitHandler
21 CoreFoundation 0xa25e0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
22 CoreFoundation 0x9c704 __CFRunLoopDoObservers
23 CoreFoundation 0x9ccb0 __CFRunLoopRun
24 CoreFoundation 0x9c360 CFRunLoopRunSpecific
25 GraphicsServices 0x3734 GSEventRunModal
26 UIKitCore 0xbca584 -[UIApplication _run]
27 UIKitCore 0xbcfdf4 UIApplicationMain
28 JobLogic 0x1d9ac4 main + 14 (main.m:14)
29 libdyld.dylib 0x1cf8 start`
Here's what I've observed:
The crash consistently occurs within 3-4 seconds of app launch on iOS 14 devices.
I'm seeking assistance with:
Understanding the Cause: Any insights into potential causes of this crash, particularly related to _[_UISnapshotWindow actualSceneBounds] and its interaction with iOS 14, would be greatly appreciated.
Replication Steps: If possible, guidance on how to reliably replicate the crash on a development device would be extremely helpful for debugging purposes.
Solutions: Any suggestions or known workarounds to address this specific crash or similar issues in iOS 14 would be invaluable.
Post not yet marked as solved
I'm trying to get voiceover to announce accessibility label for UIActivityViewController (for a share sheet that pops up on clicking share button) before the focus goes to one of activity items inside the UIActivityViewController.
In order to achieve the above behavior, I'm just assigning accessibilityLabel for UIActivityViewController's view. But looks like I'm not able to override the default accessibility implementation of UIActivityViewController.
Is there any way we could override the existing accessibility behavior of UIActivityViewController and announce accessibility label for share options?
Thanks in advance!!
Post not yet marked as solved
I tried to create the demo with the code
import UIKit
class ViewController: UIDocumentBrowserViewController, UIDocumentBrowserViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.browserUserInterfaceStyle = .dark
let button = UIBarButtonItem(title: "First", style: .plain, target: nil, action: #selector(action(_:)))
let button2 = UIBarButtonItem(title: "Second", style: .plain, target: nil, action: #selector(action(_:)))
self.additionalLeadingNavigationBarButtonItems = [button, button2]
}
@objc func action(_ sender: UIBarButtonItem) {
showAlert(with: sender)
}
func showAlert(with button: UIBarButtonItem) {
let controller = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let action = UIAlertAction(title: "Test", style: .default)
controller.addAction(action)
controller.addAction(action)
let presentationPopover = controller.popoverPresentationController
presentationPopover?.sourceItem = button
present(controller, animated: true)
}
}
But the action sheet is in the wrong position when the user taps the button bar. This issue only happens when the user switches between the share and recent options before tapping the bar button.
Post not yet marked as solved
extension UIView {
func takeSnapshot(rect : CGRect? = CGRect.zero) -> UIImage? {
let renderer = UIGraphicsImageRenderer(size: frame.size)
var image = renderer.image { _ in drawHierarchy(in: bounds, afterScreenUpdates: true) }
if let imageRect = rect, imageRect != CGRect.zero {
let screenshotFrame = CGRect(x: imageRect.origin.x * UIScreen.main.scale, y: imageRect.origin.y * UIScreen.main.scale, width: imageRect.size.width * UIScreen.main.scale, height: imageRect.size.height * UIScreen.main.scale)
let imageRef = image.cgImage!.cropping(to: screenshotFrame)
image = UIImage.init(cgImage: imageRef!, scale: image.scale, orientation: image.imageOrientation)
}
UIGraphicsEndImageContext()
return image
}
}
which was working fine until I updated to macOS 14.4.1 from 14.2.1 and to Xcode 15.3 from 15.0.
issue
From my Mac Catalyst app, if I try to take screenshot of imageView, the screenshot is brighter.
If I try this method it seems working:
func takeSnapshotWithoutScale() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.frame.size, false, 0)
if let currentContext = UIGraphicsGetCurrentContext() {
self.layer.render(in: currentContext)
}
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
Post not yet marked as solved
Though I cannot find any documentation, it seems that UIPasteboard cannot be used from a Quick Look Preview app extension.
I have such an extension, which contains a view that supports copying text as follows:
- (IBAction)copy:(nullable id)sender {
UIPasteboard * pboard = UIPasteboard.generalPasteboard;
pboard.string = _rep.text;
}
This is invoked from a context menu (edit menu) item.
This works fine In the simulator, but on device the pasteboard remains empty and errors like the following are emitted:
-[PBServerConnection pasteboardWithName:createIfNeeded:authenticationBlock:dataOwnerBlock:error:] failed with error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.pasteboard.pasted was invalidated: failed at lookup with error 159 - Sandbox restriction." UserInfo={NSDebugDescription=The connection to service named com.apple.pasteboard.pasted was invalidated: failed at lookup with error 159 - Sandbox restriction.}
It's unclear to me why such functionality would be problematic and necessary to block.
It would be nice if this were documented clearly, as I wasted a lot of time trying to figure out why this was not working.
(And no, I have not filed a feedback report or TSI yet, as I'm presently very short on time, and I don't have a sample project prepared to demonstrate the issue.)
Hi together,
i have truble to parse an json with an array like following:
"data": [
[
0000000000,
[
{
"count": 0
}
]
],
[
0000000000,
[
{
"count": 0
}
]
]
],
Can someone help me to parse that with the this?
Thanks
Hi, developers!
I use DiffableDataSource for myTableView and was surprised when I found that TableView in this case caches previously created cells after (or before) a new update. It seems that this is implemented to store cell states and quickly update if the contents of the table change.
Because of this mechanism, I have the following problem: my cells use reference-type view models, which in turn contain notification observers from the file upload service. The view model is connected to the cell with a closure, which is called upon notification and updates, for example, the progress scale in the cell
After uploading the file, I make a new applySnapshot using similar models with cameras (but, for example, the "fileName" field is already different, so I need to change it in cell).
Due to caching of cells in memory, the old view models with observers are not released, as a result, I get two observers, for two different cells, one of which is visible, and the second is not. This causes problems with UI. To summarize, my question is, is it possible to disable cell caching or clean the cache if using Diffable Data Source manually?
Post not yet marked as solved
This is to see if anyone knows how to resolve this incident in the new version of XCODE 15.3 since it works fine in version 15.1
As you can see, when you open the component, the text type appears by default and the added library does not load nunitosan, when change to customs and search the font, it does not appear in the list.
I would greatly appreciate any TIP or solution for this error in updating the tool.
Post marked as Apple Recommended
How can I open the user's Health Privacy Settings directly from my app when I'd like them to review them?
I believe similar questions have been asked before like this one: https://forums.developer.apple.com/forums/thread/730434
However, I'm wondering if the situation is changed for iOS 17 or if there's a way that works for Health permissions.
This is directly possible in the Garmin Connect app for example which is a major app on the store.
Please run the following UIKit app.
It displays a collection view with compositional layout (list layout) and diffable data source.
import UIKit
class ViewController: UIViewController {
var bool = false {
didSet {
var snapshot = dataSource.snapshot()
snapshot.reconfigureItems(snapshot.itemIdentifiers)
dataSource.apply(snapshot, animatingDifferences: true)
}
}
var collectionView: UICollectionView!
var dataSource: UICollectionViewDiffableDataSource<String, String>!
var snapshot: NSDiffableDataSourceSnapshot<String, String> {
var snapshot = NSDiffableDataSourceSnapshot<String, String>()
snapshot.appendSections(["section"])
snapshot.appendItems(["id"])
return snapshot
}
override func viewDidLoad() {
super.viewDidLoad()
configureHierarchy()
configureDataSource()
}
func configureHierarchy() {
collectionView = .init(frame: view.bounds, collectionViewLayout: createLayout())
view.addSubview(collectionView)
collectionView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
func createLayout() -> UICollectionViewLayout {
let configuration = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
return UICollectionViewCompositionalLayout.list(using: configuration)
}
func configureDataSource() {
let cellRegistration = UICollectionView.CellRegistration<UICollectionViewListCell, String> { [weak self] cell, indexPath, itemIdentifier in
guard let self else { return }
let _switch = UISwitch()
cell.accessories = [
.customView(configuration: .init(
customView: _switch,
placement: .trailing())
),
// .disclosureIndicator()
]
_switch.isOn = bool
_switch.addTarget(self, action: #selector(toggleBool), for: .valueChanged)
}
dataSource = .init(collectionView: collectionView) { collectionView, indexPath, itemIdentifier in
collectionView.dequeueConfiguredReusableCell(using: cellRegistration, for: indexPath, item: itemIdentifier)
}
dataSource.apply(self.snapshot, animatingDifferences: false)
}
@objc func toggleBool() {
bool.toggle()
}
}
When you tap on the switch, it lags.
If you uncomment .disclosureIndicator() and tap on the switch, it doesn't lag.
How do I make it so that the switch doesn't lag without having a disclosure indicator in the cell?
Note: while it would solve the issue, I would prefer not to declare the switch at the class level, as I don't want to declare all my controls, which could be quite a lot, at the view controller level in my real app.
Edit: declaring the switch at the configureDataSource() level also fixes it, but it would still be inconvenient to declare many switches, say of a list with n elements, at that level.
If you run the following UIKit app and tap the view controller's right bar button item, the footerText property will change.
How should I update the collection view's footer to display the updated footerText?
class ViewController: UIViewController {
var collectionView: UICollectionView!
var footerText = "Initial footer text"
var dataSource: UICollectionViewDiffableDataSource<Section, String>!
var snapshot: NSDiffableDataSourceSnapshot<Section, String> {
var snapshot = NSDiffableDataSourceSnapshot<Section, String>()
snapshot.appendSections(Section.allCases)
snapshot.appendItems(["A", "a"], toSection: .first)
return snapshot
}
enum Section: CaseIterable {
case first
}
override func viewDidLoad() {
super.viewDidLoad()
configureHierarchy()
configureDataSource()
}
func configureHierarchy() {
navigationItem.rightBarButtonItem = .init(title: "Change footer text", style: .plain, target: self, action: #selector(changeFooterText))
collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: createLayout())
view.addSubview(collectionView)
collectionView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
@objc func changeFooterText() {
footerText = "Secondary footer text"
}
func configureDataSource() {
let cellRegistration = UICollectionView.CellRegistration<UICollectionViewListCell, String> { cell, indexPath, itemIdentifier in
var contentConfiguration = UIListContentConfiguration.cell()
contentConfiguration.text = itemIdentifier
cell.contentConfiguration = contentConfiguration
}
dataSource = .init(collectionView: collectionView) { collectionView, indexPath, itemIdentifier in
collectionView.dequeueConfiguredReusableCell(using: cellRegistration, for: indexPath, item: itemIdentifier)
}
configureSupplementaryViewProvider()
dataSource.apply(self.snapshot)
}
func configureSupplementaryViewProvider() {
let headerRegistration = UICollectionView.SupplementaryRegistration<UICollectionViewListCell>(elementKind: UICollectionView.elementKindSectionHeader) { headerView, elementKind, indexPath in
var contentConfiguration = UIListContentConfiguration.cell()
contentConfiguration.text = "Header \(indexPath.section)"
headerView.contentConfiguration = contentConfiguration
}
let footerRegistration = UICollectionView.SupplementaryRegistration<UICollectionViewListCell>(elementKind: UICollectionView.elementKindSectionFooter) { [weak self] headerView, elementKind, indexPath in
guard let self else { return }
var contentConfiguration = UIListContentConfiguration.cell()
contentConfiguration.text = self.footerText
headerView.contentConfiguration = contentConfiguration
}
dataSource.supplementaryViewProvider = { collectionView, kind, indexPath in
if kind == UICollectionView.elementKindSectionHeader {
collectionView.dequeueConfiguredReusableSupplementary(using: headerRegistration, for: indexPath)
} else if kind == UICollectionView.elementKindSectionFooter {
collectionView.dequeueConfiguredReusableSupplementary(using: footerRegistration, for: indexPath)
} else {
nil
}
}
}
func createLayout() -> UICollectionViewLayout {
UICollectionViewCompositionalLayout { section, layoutEnvironment in
var config = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
config.headerMode = .supplementary
config.footerMode = .supplementary
return NSCollectionLayoutSection.list(using: config, layoutEnvironment: layoutEnvironment)
}
}
}
What I've tried to do in footerText's didSet:
Reconfiguring the supplementary view provider:
var footerText = "Initial footer text" {
didSet {
configureSupplementaryViewProvider()
}
}
Also re-applying the snapshot:
var footerText = "Initial footer text" {
didSet {
configureSupplementaryViewProvider()
dataSource.apply(self.snapshot)
}
}
Also re-configuring the items:
var footerText = "Initial footer text" {
didSet {
configureSupplementaryViewProvider()
dataSource.apply(self.snapshot, animatingDifferences: true)
var snapshot = dataSource.snapshot()
snapshot.reconfigureItems(snapshot.itemIdentifiers)
dataSource.apply(snapshot, animatingDifferences: false)
}
}
We use CollectionView with UICollectionViewLayout. On willDisplay we send all cells to back, and move to front supplementaryView. It works well, until iOS 17. But now both of these methods doesn't work. Does anybody know why? And any other way to resolve this problem.
Post not yet marked as solved
I have an application that needs to make a USSD call, but on some devices the * and # don't work on the dialer, on others it does.
if let phoneNumber = ussdNumberTextfield.text {
let encoded = "telprompt:\(phoneNumber)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
if let url = URL(string: encoded) {
if application.canOpenURL(url){
DispatchQueue.main.async {
self.application.open(url, options: [:]) { success in
}
}
}
}
}
Post not yet marked as solved
This crash happens online and cannot be tested and reproduced. I need help. Thank you very much.
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000018b4190d0
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: SIGNAL 5 Trace/BPT trap: 5
Terminating Process: exc handler [338]
Triggered by Thread: 7
Last Exception Backtrace:
0 CoreFoundation 0x180cd7c60 __exceptionPreprocess + 216 (NSException.m:200)
1 libobjc.A.dylib 0x198507ee4 objc_exception_throw + 56 (objc-exception.mm:565)
2 CoreAutoLayout 0x1987cb000 _AssertAutoLayoutOnAllowedThreadsOnly + 412 (NSISEngine.m:0)
3 CoreAutoLayout 0x1987cdb7c -[NSISEngine withBehaviors:performModifications:] + 32 (NSISEngine.m:1975)
4 UIKitCore 0x1831262fc -[UIView _resetLayoutEngineHostConstraints] + 80 (NSLayoutConstraint_UIKitAdditions.m:1426)
5 UIKitCore 0x1830fc0c0 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2376 (UIView.m:18416)
6 QuartzCore 0x18477c520 CA::Layer::layout_if_needed(CA::Transaction*) + 528 (CALayer.mm:10118)
7 QuartzCore 0x18476f294 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 132 (CALayer.mm:2480)
8 QuartzCore 0x184782cc8 CA::Context::commit_transaction(CA::Transaction*, double, double*) + 464 (CAContextInternal.mm:2612)
9 QuartzCore 0x18478b79c CA::Transaction::commit() + 708 (CATransactionInternal.mm:449)
10 QuartzCore 0x1847dfe04 CA::Transaction::release_thread(void*) + 224 (CATransactionInternal.mm:651)
11 libsystem_pthread.dylib 0x1dc052d90 _pthread_tsd_cleanup + 520 (pthread_tsd.c:388)
12 libsystem_pthread.dylib 0x1dc055c08 _pthread_exit + 80 (pthread.c:1717)
13 libsystem_pthread.dylib 0x1dc05124c _pthread_wqthread_exit + 100 (pthread.c:2559)
14 libsystem_pthread.dylib 0x1dc050e88 _pthread_wqthread + 420 (pthread.c:2593)
15 libsystem_pthread.dylib 0x1dc05092c start_wqthread + 8 (:-1)
Post not yet marked as solved
Hello,
Is there any way to iterate all views and subviews in current xcode app and taget to particular properties to every UIButton.
I tried using folllowing code but it is not working.
for views in self.view.subviews {
if views == UIButton {
button.isPointerInteractionEnabled = true
} else {
}
}
Post not yet marked as solved
First of all, I decided to make my project with only UIKit.
So I deleted 'Main' storyboard, Info.plist->Storyboard name, and Main storyboard file base name->Main. And I edited SceneDelegate.
So now I can display the single viewControllers, but when I try to set 'UITabBarController' to rootViewController, It cause this error(title).
I tried to make UITabBarController in ViewController, UITabBarController in SceneDelegate and some more.
// BackgroundViewController for the rootViewController
import UIKit
class BackgroundViewController: UIViewController {
let backgroundTabBarController = UITabBarController()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
createTabBar()
}
}
extension BackgroundViewController {
private func createTabBar() {
view.backgroundColor = .white
view.addSubview(backgroundTabBarController.view)
let firstViewController = BookSearchViewController()
let secondViewController = MainViewController()
let thirdViewController = UserStatusViewController()
let lastViewController = OrderViewController()
firstViewController.tabBarItem = UITabBarItem(title: "Search", image: UIImage(systemName: "magnifyingglass.circle.fill"), selectedImage: UIImage(systemName: "magnifyingglass.circle"))
secondViewController.tabBarItem = UITabBarItem(title: "Main", image: UIImage(systemName: "house.fill"), selectedImage: UIImage(systemName: "house"))
thirdViewController.tabBarItem = UITabBarItem(title: "My", image: UIImage(systemName: "person.fill"), selectedImage: UIImage(systemName: "person"))
lastViewController.tabBarItem = UITabBarItem(title: "Order", image: UIImage(systemName: "menucard.fill"), selectedImage: UIImage(systemName: "menucard"))
backgroundTabBarController.viewControllers = [firstViewController, secondViewController, thirdViewController, lastViewController]
backgroundTabBarController.selectedViewController = secondViewController
}
}
// SceneDelegate
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.rootViewController = BackgroundViewController()
window?.makeKeyAndVisible()
}
}
// Error code
Thread 1: "Could not find a storyboard named 'Main' in bundle NSBundle </Users/[MyDesktopName]/Library/Developer/CoreSimulator/Devices/[ApplicationName]/data/Containers/Bundle/Application/[ApplicationName]/BTY.app> (loaded)"
But anyone of this solve the problem.
How can I make UITabBarController to rootViewController?
Make UITabBarController in SceneDelegate
Make new UIViewController that have UITabBarController and set to rootViewController
Set ViewControllers with 'UINavigationController(rootViewController:)'
Present UITabBarController from other viewController
Post not yet marked as solved
First of all, I decided to make my project with only UIKit.
So I deleted 'Main' storyboard, Info.plist->Storyboard name, and Main storyboard file base name->Main.
And I edited SceneDelegate.
So now I can display the single viewControllers, but when I try to set 'UITabBarController' to rootViewController, It cause this error(title).
I tried to make UITabBarController in ViewController, UITabBarController in SceneDelegate and some more.
How can I fix this? We can't use code-based UITabBarController in new version of Xcode now?
The documentation says the default value is false, yet when tested on two devices (iPhone 7 15.8; iPhone XS 17.4) the value is always true unless explicitly set to false. Is the documentation incorrect?
Post not yet marked as solved
I'm using something similar to this example.
import SwiftUI
struct ContentView: View {
@State private var toggle = false
var body: some View {
CustomParentView {
Button {
toggle.toggle()
} label: {
Text(toggle.description)
}
}
}
}
struct CustomParentView<Content: View>: UIViewRepresentable {
let content: Content
@inlinable init(@ViewBuilder content: () -> Content) {
self.content = content()
}
func makeUIView(context: Context) -> UIView {
let view = UIView()
let hostingController = context.coordinator.hostingController
hostingController.view.frame = view.bounds
hostingController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(hostingController.view)
return view
}
func updateUIView(_ uiView: UIView, context: Context) {
context.coordinator.hostingController.rootView = self.content
}
class Coordinator: NSObject {
var hostingController: UIHostingController<Content>
init(hostingController: UIHostingController<Content>) {
self.hostingController = hostingController
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(hostingController: UIHostingController(rootView: content))
}
}
The only different thing is I'm using UIScrollView.
When I have a @State width and call .frame(width) on the content, the content would stay with initial width even when width is changed.
I tried:
hostingController.sizingOptions = .intrinsicContentSize
This time the size would change to correct size if I pinch zoom the content, but the initial size that trigger updateUIView would be .zero. This prevents me to center the content.
Is there a way to dynamically set size and get correct rendering just like any child view of a normal SwiftUI view?
Post not yet marked as solved
The standard Command-A keyboard shortcut in a UITextView is broken in Mac Catalyst 16/ Ventura with either TextKit 2 or TextKit 1 for long texts.
In iOS 16 the selection is instant but on MacOS with Catalyst a beachball is displayed for more than 50 seconds and the app consumes gigabytes of memory.
Earlier versions of Mac Catalyst work fine.
To duplicate this just create a small storyBoard app with an editable UITextView and paste a long document around 1Mb then use the standard Select All Command either from the keyboard or the app menu.
l I use Tale of Two Cities which is about 800k to test in my app.
Is there any workaround for this?