Saya mencoba untuk menampilkan gambar dari perpustakaan foto di UIImageView
Kesalahan lengkapnya adalah:
09-06-2017 21: 55: 59.063307 + 0200 firstapp2.0 [12873: 1120778] Kesalahan penemuan PhotoPicker: Error Domain = PlugInKit Code = 13 "kueri dibatalkan" UserInfo = {NSLocalizedDescription = kueri dibatalkan}
Kode saya disertakan di bawah ini:
import UIKit
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate{
@IBOutlet weak var pic: UIImageView!
@IBOutlet weak var text: UILabel!
var chosenImage : UIImage!
override func viewDidLoad() {
super.viewDidLoad()
pic.isUserInteractionEnabled = true;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [AnyHashable: Any]) {
var chosenImage = info[UIImagePickerControllerEditedImage]
self.pic!.image = chosenImage as! UIImage
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
@IBAction func tap(_ sender: Any) {
self.text.text = "Kreason"
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
nilai kamus dicor sebagai id di obj-c. Saya juga telah menerapkan permintaan otorisasi dan penanganan untuk mengakses perpustakaan foto pengguna: masih mendapatkan pesan kesalahan. Saya telah menambahkan di file info.plist entri privasi untuk penggunaan perpustakaan foto pengguna.Jawaban:
Anda perlu membuat referensi Objective-C eksplisit:
@objc
sumber
dismiss
.extension [your class name]
blok, di luar kelas.Saya menemukan solusi ini. Kami mendapat kesalahan ini karena dua alasan yang disebutkan di bawah ini.
Kode Otorisasi
didFinishPickingMediaWithInfo
Salah:
Baik
Saya harap solusi ini akan membantu Anda mengatasi kesalahan ini.
Jika berhasil, jangan lupa menandainya sebagai benar, jadi ini akan membantu orang lain menemukan cara yang benar.
sumber
picker.dismiss(animated: true, completion: nil)
Aku menemukannya! Ini mencoba memberi tahu Anda bahwa Anda tidak memiliki otorisasi untuk "foto". Anda perlu menyertakan
#import <Photos/Photos.h>
dan meminta otorisasi misalnya seperti ini di Objective-C.Semoga ini bisa menghemat waktu Anda. Saya menghabiskan dua hari penuh untuk men-debug ini!
Saya yakin seseorang dapat memberi tahu Anda cara melakukan hal yang sama di Swift.
sumber
Mencoba beberapa respons kombinasi tanpa banyak keberhasilan.
Dengan menggunakan Swift 4, saya menemukan bahwa saya perlu memastikan dua item berikut diimplementasikan untuk memastikan bahwa gambar dipilih dan ditempatkan ke dalam picker (perhatikan bahwa kesalahan "[penemuan] ditemukan saat menemukan ekstensi:
pesan masih ditampilkan di konsol, tetapi itu tidak mencegah Anda untuk menambahkan gambar). Mungkin ini adalah pesan yang menyebabkan alat pilih ditutup?
1) delegasi untuk
UIImagePickerController
ini(UIImagePickerControllerDelegate & UINavigationControllerDelegate)?
sehingga perlu secara eksplisit menambahkanUINavigationControllerDelegate
sebagai salah satu protokol:2) Pastikan info.plist memiliki
Privacy - Photo library Usage Description
kunci dan nilai String yang ditetapkan.Tentu saja, Anda perlu memastikan bahwa Anda membuat
UIImagePickerController
dan menetapkan delegasinya sama denganself
diViewDidLoad()
:sumber
Saya memperbaiki masalah ini, panggil fungsi di bawah ini ke viewdidload atau viewWillAppear atau viewDidAppear untuk memeriksa izin untuk aplikasi Anda.
Dan untuk menggunakan metode di atas, jangan lupa tambahkan
import Photos
di atas kelas.sumber
XCODE 10.1 / SWIFT 4.2:
Tambahkan izin yang diperlukan (orang lain disebutkan)
Terapkan fungsi delegasi ini:
sumber
* Hilang DELEGATE * di Swift 3
Dalam kasus saya, semua pengaturan sudah benar:
1 - Delegates (UIImagePickerControllerDelegate, UINavigationControllerDelegate);
2 - Izin sudah diverifikasi;
3 - Plist sudah selesai;
4 - Semuanya membaca Jawaban ini, saya lakukan;
Tapi saya lupa untuk menerapkan
pickerview.delegate = self
padaviewDidLoad
Karena saya copy paste dari viewController saya yang lain dan lupa bahwa!Saya harap ini membantu seseorang, tinjau COPY / PASTE Anda terlebih dahulu !!!
sumber
Ini mungkin bukan jawaban yang paling membantu secara langsung - tapi semoga bisa membantu! Saya 99% yakin bahwa pesan kesalahan khusus ini tidak benar-benar mengarahkan Anda ke masalah sebenarnya. Saya menghabiskan waktu berjam-jam untuk menarik rambut saya karena masalah yang sama persis.
1) Saya memiliki otorisasi untuk mencetak foto ke konsol ketika saya meluncurkan alat pilih saya, 2) Saya dapat menavigasi dan memilih foto dengan cukup mudah, dan 3) ketika saya akan mengembalikan saya ke tampilan setelah menutup alat pilih, gambar tombol saya tidak diperbarui dengan foto baru ... dan satu-satunya petunjuk bahwa saya memiliki masalah adalah pesan kesalahan yang sama persis dengan yang Anda terima.
Ternyata saya melakukan hard-coding untuk gambar placeholder di ViewWillAppear, bukan ViewDidLoad. Setiap kali picker menutup, itu memanggil ViewWillAppear dan mengganti gambar yang saya pilih dengan gambar hard code saya. Saya memperbaiki masalah itu dan cukup yakin - semuanya berfungsi dengan baik sekarang ... dan saya masih melihat pesan kesalahan itu setiap kali saya kembali dari pemetik.
Saya sarankan mencari di tempat lain selain ImagePicker untuk masalah Anda dan kemungkinan besar Anda akan menemukannya.
sumber
Jika Anda belum melakukannya, coba ini .
Ini memecahkan masalah saya.
sumber
NSLog
.Ini memperbaiki masalah di Swift 4:
Ubah kode di bawah ini
untuk ini:
sumber
Saya mendapat pesan yang sama ketika saya mencoba menampilkan pengontrol lain dari pemanggil callback
imagePickerController
. Solusi yang berhasil bagi saya adalah memindahkan kode saya di dalam callback penyelesaian dari metode pemecatan pemilihsumber
Pastikan Anda subclassing kedua:
UIImagePickerControllerDelegate, UINavigationControllerDelegate
.Juga, ingatlah untuk mengatur delegasi:
Penghargaan untuk sumber ini .
sumber
Menemukan perbaikan untuk masalah ini membutuhkan waktu lama bagi saya. Sepertinya masalahnya adalah fungsi imagePickerController dari UIImagePickerControllerDelegate tidak dapat ditemukan. Jika Anda telah menyetel delegasi dengan benar dan berhenti berfungsi setelah memutakhirkan ke Swift 4, masalahnya mungkin Anda tidak membuatnya dapat diakses oleh Objective-C dengan menggunakan @objc yang diperlukan sejak Swift 4.
Itu harus:
dari pada
sumber
Objective-C method 'imagePickerController:didFinishPickingMediaWithInfo:' provided by method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' conflicts with optional requirement method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' in protocol 'UIImagePickerControllerDelegate'
extension
blok?Memperbaiki dengan mengatur penundaan 1 detik saat mengatur gambar.
sumber
Pastikan untuk menambahkan
internal func
di awal dan kemudian tambahkan huruf kecil setelah tanda kurung (_ picker: UIImagePickerController…
lalu ubah dariAnyObject
menjadiAny
]…Periksa kode di bawah ini:
sumber
Ini membuat saya bingung, tetapi jawaban di tautan di bawah ini berhasil untuk saya. Kesalahan hilang dan gambar ditampilkan seperti yang diharapkan
Seperti salah satu jawaban di atas, Anda harus memiliki
(_ picker...
tetapi juga@objc
sebelum fungsinya.https://forums.developer.apple.com/thread/82105
sumber
Ini memecahkan kesalahan saya:
sumber
Silakan periksa dengan langkah-langkah sebagai berikut:
Memiliki akses ke album:
Sajikan UIImagePickerController
Langkah kuncinya, pastikan metode delegasi seperti mengikuti secara ketat
sumber
Inilah yang saya lakukan dan itu memecahkan masalah saya.
Semoga ini membantu!
sumber
internal
adalah defaultnya; Aku ingin tahu apa bedanya untuk menentukannya ...Dalam kasus saya, saya mendapatkan kesalahan ini karena saya menampilkan pengontrol pemilih gambar tanpa terlebih dahulu memverifikasi apakah pengguna telah mengizinkan akses ke gambar. Di tempat lain dalam kode saya, pengguna telah memberikan izin jadi saya pikir yang perlu saya lakukan hanyalah mengimpor Foto. Namun, karena mereka 'mungkin' tidak memberikan izin pada saat itu di aplikasi menambahkan ini tepat sebelum saya menyajikan pengontrol pemilih gambar memecahkan masalah untuk saya (impor Foto juga).
Jika jawaban ini tampak berlebihan, permintaan maaf saya, tetapi saya harus mengumpulkan dari beberapa jawaban berbeda agar solusi saya berfungsi. Mungkin ini akan membantu orang lain yang menggunakan Swift 4.
sumber
gunakan kode ini
sumber
Kesalahan "Domain Kesalahan = PlugInKit Code = 13" ini telah membingungkan banyak orang meskipun tampaknya ini adalah pesan debug apel yang tidak berbahaya. Saya mengalami kesulitan mendapatkan gambar yang saya pilih untuk disetel di UI saya dan berpikir bahwa kesalahan itu adalah masalahnya, namun itu adalah sesuatu yang sedikit lebih halus.
Saya memiliki pengontrol pemilih gambar dalam file yang terpisah dari pengontrol tampilan yang menampilkannya.
MyViewController.swift
ImagePicker.swift
Sebagian besar tutorial dan jawaban memiliki penyelesaian disetel ke nol. Namun jika Anda menyetel penyelesaian ke nihil dan memanggil metode didSelect delegasi secara terpisah, metode tersebut akan dipanggil tetapi gambarnya tidak disetel, jadi pastikan untuk menggunakan penyelesaian 'tutup'.
Dan sekali lagi, saya tahu jawaban ini mungkin tidak terkait langsung dengan pertanyaan awal tetapi saya merasa banyak orang datang ke sini untuk masalah ini dan solusi yang diberikan tidak membantu. Alasannya adalah bahwa sebagian besar orang yang memberikan jawaban memiliki pengontrol pemilih gambar di kelas yang sama dengan pengontrol tampilan utama, sehingga tidak perlu menggunakan penyelesaian.
sumber
Kesalahan juga terjadi ketika Anda belum mengkonfigurasi izin penggunaan Perpustakaan Foto di
Info.plist
file Anda .Anda perlu menambahkan
Privacy - Photo Library Usage Description
dalamInfo.plist
dengan String yang akan muncul ketika App Anda mencoba pertama kalinya untuk mengakses Perpustakaan Foto Pengguna.Info.plist
Penyesuaian terakhir akan terlihat seperti ini:sumber
Saya memiliki kesalahan yang sama dan saya memperbaikinya dengan cara ini:
mendapatkan objek gambar dengan cara berbeda tergantung pada UIImagePickerController allowEditing benar atau salah
Dan tentunya mintalah ijin untuk mengakses pustaka foto terlebih dahulu seperti komentar diatas.
sumber
Pada akhirnya,
UINavigationControllerDelegate
delegasi saya hilang.class YourViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate
sumber
Dalam kasus saya karena manajemen memori alokasi cepat tampaknya dioptimalkan dan diperbaiki oleh Tim Apple. Kode saya bekerja dengan sempurna sampai pembaruan yang cepat dan saya menemukan "kesalahan" saya adalah bahwa saya tidak mempertahankan pemetik tetapi telah bekerja selama berabad-abad tanpa retensi jadi di sini solusi siap kerja penuh.
Dan
sumber
Saya menemukan masalah yang sama. Tak satu pun dari saran yang disebutkan di atas berhasil untuk saya. Namun, saya menyelesaikannya, dengan secara eksplisit memanggil picker.dismiss dan mengabaikan posting itu. Saya tidak jelas mengapa saya melakukan panggilan keluar seperti itu, tetapi itu berhasil untuk saya.
sumber
Saya membaca semua jawaban ini dan sedikit dimodifikasi di sini dan tidak perlu ditutup, ini berhasil untuk saya, Terima kasih orang lain yang telah menjawab di sini.
sumber
saya menemukan solusi dari IMage PickerView .....
sumber
klik imageView untuk memuat gambar dari perpustakaan foto dan menampilkan pratinjau pada imageview yang sama. dengan cepat 4
sumber