我使用這個程序來掃描條形碼斑馬線:MonoTouch的斑馬線相機不會打開
https://github.com/jmawebtech/BarcodeReader-MonoTouch
如果我進入應用程序,掃描條形碼,按home鍵,重新輸入程序,然後點擊掃描,我看到一個黑色的屏幕,看起來像一個相機的快門從來沒有打開。我附上了這張票的圖片。
如果我按取消,並返回到掃描我看到攝像頭再次打開。
爲什麼相機從來沒有在一些場合打開?
我使用這個程序來掃描條形碼斑馬線:MonoTouch的斑馬線相機不會打開
https://github.com/jmawebtech/BarcodeReader-MonoTouch
如果我進入應用程序,掃描條形碼,按home鍵,重新輸入程序,然後點擊掃描,我看到一個黑色的屏幕,看起來像一個相機的快門從來沒有打開。我附上了這張票的圖片。
如果我按取消,並返回到掃描我看到攝像頭再次打開。
爲什麼相機從來沒有在一些場合打開?
我不得不添加此代碼的Info.plist:
UIApplicationExitsOnSuspend是
APP的代表,我不得不添加以下代碼:
public override void OnResignActivation (UIApplication application)
{
UIApplication.SharedApplication.PerformSelector(new Selector("terminateWithSuccess"), null, 0f);
}
視頻記錄儀,它是在該軟件中使用,不能在後臺線程運行。
你不必去改變你的應用程序不能在後臺運行的極端。
我通過創建時間每一件我發起了cameraviewcontroller打開相機,我會指向這個屬性的AppDelegate的一個視圖控制器屬性修復了這個問題。我稱之爲cvc。
我通過參考它通過訪問的屬性:
的AppDelegate廣告=(AppDelegate中)UIApplication.SharedApplication.Delegate;
然後在AppDelegate中我有這樣的代碼:
public override void OnResignActivation (UIApplication application)
{
cvc.PerformSelector(new Selector("terminateWithSuccess"), null, 0f);
}
感謝儘管
您能否詳細說明您所做的事情?謝謝。 – servarevitas3
我通過創建保持一個參照之前我自己的掃描方法解決了這個在kickstart顯示ViewController
和處置它在顯示一個新的之前。
public static class BarcodeScanner
{
private static ZxingCameraViewController currentBarcodeScanner;
public static Task<Result> Scan(UIViewController hostController, MobileBarcodeScanner scanner, MobileBarcodeScanningOptions options)
{
return Task.Factory.StartNew(delegate
{
Result result = null;
var scanResultResetEvent = new ManualResetEvent(false);
hostController.InvokeOnMainThread(delegate
{
// Release previously displayed barcode scanner
if (currentBarcodeScanner != null)
{
currentBarcodeScanner.Dispose();
currentBarcodeScanner = null;
}
currentBarcodeScanner = new ZxingCameraViewController(options, scanner);
// Handle barcode scan event
currentBarcodeScanner.BarCodeEvent += delegate(BarCodeEventArgs e)
{
currentBarcodeScanner.DismissViewController();
result = e.BarcodeResult;
scanResultResetEvent.Set();
};
// Handle barcode scan cancel event
currentBarcodeScanner.Canceled += delegate
{
currentBarcodeScanner.DismissViewController();
scanResultResetEvent.Set();
};
// Display the camera view controller
hostController.PresentViewController(currentBarcodeScanner, true, delegate{});
});
// Wait for scan to complete
scanResultResetEvent.WaitOne();
return result;
});
}
}
你再使用它像這樣
BarcodeScanner.Scan(this)
.ContinueWith(t => InvokeOnMainThread(() =>
{
if (t.Result == null)
{
new UIAlertView("Scan Cancelled", "The barcode scan was cancelled", null, null, "OK").Show();
}
else
{
new UIAlertView("Scan Complete", "Result from barcode scan was " + t.Result, null, null, "OK").Show();
}
}))
可以解決這個問題,從而避免當發送到後臺您的應用程序終止。請參閱我的回答 –