2016-03-30 23 views
0

Kullanıcının fotoğrafını çekmek isteyip istemediğini veya kitaplarından bir resim seçmesini isteyen bir uyarı tetikleyen bir Bar Düğmesi Öğesi var. Fotoğraf kütüphanesi seçildiğinde, bir fotoğraf seçtikleri için bir UIImagePickerController'ı başlatıyorum.Bar Düğmesi Öğe işten çıkarıldıktan sonra çalışmıyor UIImagePickerController

Sorunum, bir görüntü seçip görüntü denetleyicisini kapattıktan sonra, uygulamanın özgün görüntü denetleyiciye geri döndüğü, görüntünün çıkışta düzgün görüntülendiği, ancak daha önce çalışan düğmenin bir görüntü seçmek için uyarıyı tetiklemeyeceği tekrar (ne de herhangi bir şey konsola yazdırılacak).

@IBAction func pickAnImage(sender: AnyObject) { 
    selectImageSourceAlert() 
} 

func selectImageSourceAlert() { 
    let alert = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet) 
    let userLibrary = UIAlertAction(title: "Photo Library", style: .Default) { 
     _ in 
     self.presentImagePicker(pickerStyle: .PhotoLibrary) 
    } 
    let useCamera = UIAlertAction(title: "Camera", style: .Default) { 
     _ in 
     let x = UIImagePickerController.isSourceTypeAvailable(.Camera) 
     print(x) 
     if x { 
      self.presentImagePicker(pickerStyle: .Camera) 
     } else { 
      print("No camera available") 
     } 
    } 

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 

    alert.addAction(userLibrary) 
    alert.addAction(useCamera) 
    alert.addAction(cancelAction) 

    presentViewController(alert, animated: true, completion: nil) 
} 

func presentImagePicker(pickerStyle style: UIImagePickerControllerSourceType) { 
    let imagePicker = UIImagePickerController() 
    imagePicker.delegate = self 
    imagePicker.sourceType = style 
    imagePicker.allowsEditing = true 

    self.presentViewController(imagePicker, animated: true, completion: nil) 
} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    self.dismissViewControllerAnimated(true, completion: nil) 

    if let image = info["UIImagePickerControllerEditedImage"] as? UIImage { 
     imagePickerView.image = image 
    } 
} 

Birkaç gün sonra, hala çözemiyorum. Ben "image = info" biti 'nı kaldırdığımda ve görüntüyü imagePickerView çıkışına atayarak, görüntü denetleyicisini kapattıktan sonra düğmenin çalıştığını fark ettim. Düğme, bir görüntü seçmeden önce herhangi bir noktada iptal edersem de çalışır. Sadece görüntüyü çıkışa atadığımda işe yaramıyor.

Yardımlarınız için şimdiden teşekkür ederiz!

DÜZENLEME: Sağ üst köşede ikinci bir düğme eklediğimde ve aynı eylemi atadığımda, bir fotoğraf atandıktan sonra bile çalıştığını fark ettim. Sol alt köşedeki ilk Bar Düğmesi Öğesi, yalnızca resme atanmış bir resim olmadığında çalışır. Neden herhangi bir şekilde imageView tarafından kapsanmadığından emin değil. Netlik için kırmızı arka plan rengi eklendi. Gerçekten Seçici kapatıldı Image gibi bu gerekmez

self.dismissViewControllerAnimated(true, completion: nil) 

:

Simulation Image

+0

bize Image Seçici tetikler düğmesi için kod gösterin. –

+0

Sadece ek kodu orijinal gönderiye eklediniz. Biraz uzun ama umarım yardımcı olur. –

+0

Kodunuzu yeni bir projede denedim ve durumumda tamam çalışıyor. Resim seçiciyi reddettikten sonra seçilen görüntüde ne yapıyorsunuz? – RomanN

cevap

1

Resim seçtikten sonra, Araç Çubuğunuzun yüksekliği 0'dır. Bunu "Hata ayıklama görünümü hiyerarşisinde" görebilirsiniz.

bu sadece kısıtlama "Toolbar.top = Resim Seçici View.bottom + 192" kaldır düzeltmek için

+0

Araç çubuğunun nasıl kaldırıldığını ancak çubuk düğme öğesinin hala nasıl görüneceğini garip. Ama bu benim için yaptı! Teşekkür ederim Damian! –

0

Bu çizgiyi kaldırmak gerekir. Bu fonksiyon mevcut görüş kontrol cihazını kapatır.

Ayrıca, bir UI nesnesini güncellerken dispatch_async kullanmayı deneyin.

dispatch_async(dispatch_get_main_queue(), 
{ 
    if let image = info["UIImagePickerControllerEditedImage"] as? UIImage 
    { 
    self.imagePickerView.image = image 
    } 
}) 
+0

Çalışmadı, ancak giriş için teşekkürler. Devam ettim ve orijinal sorumu daha fazla ayrıntı ve bir görüntü ile güncelledim. Umarım bu yardımcı olur. İnanılmaz derecede basit bir şeyi kaçırdığımı düşünüyorum, ama hayatım boyunca göremiyorum. –

+0

Merhaba Eman, kullandığınız tüm kod bu mu? Burada bir şey eksik gibi görünüyor mu? –

+0

Kesinlikle benim UIBarButtonItem ile ilgisi var. Belki bir storyboard sorunu? İşte github projesinin bir bağlantısı, belki de hikaye tahtasında bir şeyler yakalayabilir misin? [git] (https://github.com/emanleet/Meme-Me) –