Замораживание приложения строки копирования WkWebView

У меня странная проблема, когда пользователь выбирает текст в WkWebView и нажимает «копировать», мое приложение зависает. Код для копирования не запускается, просто пользователь обычно использует wkWebView.

Сбой или ошибка не отображаются, но журнал показывает:

Returning local object of class NSString PBItemCollectionServicer connection disconnected.

Когда я приостанавливаю отладчик, это все, что я вижу:

потоки

Как мне это отладить? Есть идеи?


person andromedainiative    schedule 30.04.2018    source источник
comment
Не уверен, почему это займет много времени, но попробуйте выполнить действие копирования в отдельном потоке, например. не поток графического интерфейса. Вы можете использовать Grand Central Dispatch (GCD) для запуска методов в другом потоке.   -  person KYL3R    schedule 02.05.2018
comment
не могли бы вы показать нам код?   -  person chriswillow    schedule 02.05.2018
comment
Это wkWebView, который загружает PDF. Фактическое копирование - это не код, который выполняется только пользователем, масштабирующим и помечающим текст в pdf.   -  person andromedainiative    schedule 02.05.2018
comment
Что ты копируешь?   -  person TheTiger    schedule 02.05.2018
comment
Когда пользователь пытается скопировать текст из pdf, это происходит   -  person andromedainiative    schedule 02.05.2018
comment
Вы можете воспроизвести ту же ошибку с тем же PDF-файлом в Safari? Не могли бы вы предоставить нам минимальный образец проекта, в котором ошибка воспроизводима? Вы пытались установить символические точки останова для ошибки в Xcode?   -  person chriswillow    schedule 02.05.2018
comment
Может быть, вместо этого вы можете использовать PDFView, если вы просто используете wkwebview для отображения PDF?   -  person chriswillow    schedule 02.05.2018
comment
@andromedainiative попробуйте использовать contentEditable. NSString htmlString=......‹div contentEditable=\true\›..   -  person Pranavan SP    schedule 03.05.2018
comment
@KaraBenNemsi извините за мой поздний ответ, к сожалению, я не могу использовать что-либо еще, поскольку отображаемый контент может быть либо в формате HTML, либо в формате PDF.   -  person andromedainiative    schedule 03.05.2018
comment
Что насчет моих предыдущих вопросов?   -  person chriswillow    schedule 03.05.2018
comment
Я не могу настроить тестовый пример для этого, так как наши данные используются из закрытой системы. У меня нет доступа к этим точкам данных в открытом состоянии.   -  person andromedainiative    schedule 03.05.2018


Ответы (1)


Мне не удалось устранить причину этой проблемы, но наше временное решение состояло в том, чтобы предоставить нашим пользователям длительное нажатие для копирования метаданных, которые имеют отношение к пользователю в этом представлении.

На основании этого ответа: UIWebView без копирования/вставки при отображении файлов PDF

let longPress =UILongPressGestureRecognizer(target: self, action: #selector(copyOptions))
longPress.allowableMovement = 100
longPress.minimumPressDuration = 0.3
longPress.delegate = self
longPress.delaysTouchesBegan = true
longPress.delaysTouchesEnded = true
longPress.cancelsTouchesInView = true
self.wrapper.addGestureRecognizer(longPress)

func copyOptions () {
    let alertController = UIAlertController(title: "Copy", message: nil, preferredStyle: .alert)

    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { action in

    }))

    if let someValue = self.someObject?.someValue {
        alertController.addAction(UIAlertAction(title: "Copy Some Value", style: .default, handler: { action in
            UIPasteboard.general.string = someValue
        }))
    }


    self.present(alertController, animated: true, completion: nil)
}
person andromedainiative    schedule 03.05.2018