Я пытаюсь очистить монтажный стол после того, как строка скопирована через 10 секунд. Требования следующие:
- Через 10 секунд скопированный текст очищается и поэтому не может быть вставлен в текущее приложение и другие приложения (например, iMessage, Safari)
- Если неидентичный текст копируется, когда истекает 10сек, таймер не стирает его
Попытки
- Я пытался сделать это с только
DispatchQueue.main.async
однако это замораживало исходное приложение. - Однако я попытался сделать это только с
DispatchQueue.global(qos: .background).async
, но когда я переключился на другое приложение (iMessage), через 10 секунд я все еще мог вставить номер. Мне пришлось go вернуться к исходному приложению и вернуться в iMessage, чтобы оно было стерто с лица - Это моя последняя попытка, такая же, как у # 2, только когда я стираю, когда я go вернуться к исходному приложению и вернуться к iMessage
private func clearTextAfterDelay(_ copiedCardNumber: String) {
expirationTimer?.invalidate()
expirationTimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { timer in
DispatchQueue.main.async {
let currentTextOnClipBoard = UIPasteboard.general.string
if currentTextOnClipBoard == copiedCardNumber {
UIPasteboard.general.setValue("", forPasteboardType: UIPasteboard.Name.general.rawValue)
}
}
}
DispatchQueue.global(qos: .background).async {
let runLoop = RunLoop.current
runLoop.add(self.expirationTimer!, forMode: .default)
runLoop.run()
}
}