0

Linea Pro ハードウェア バーコード スキャナーを使用したプロジェクトに取り組んでいます。始めるために、次の回答を使用しました IOS用のLinea-Pro SDKを使用するにはどうすればよいですか?

My App は、Navigation Controller (2 つのエントリを持つテーブル) と 2 つの接続された View Controller (それぞれがスキャナーを使用) で構成されます。

次のように、ナビゲーション コントローラーの viewDidLoad でデバイスを接続しています。

dtdev=[DTDevices sharedDevice];
[dtdev connect];

2 つのビュー コントローラーで、次のように viewDidLoad メソッドにデバイスを登録しています。

dtdev=[DTDevices sharedDevice];
[dtdev addDelegate:self];
[super viewDidLoad];

残念ながら、デバイス スキャン ボタンをクリックすると、2 つのビュー コントローラーの両方のデリゲート メソッドが呼び出されます。これは、両方が登録されているためです。

この動作を防ぐために、ビューが表示されるとすぐにビューコントローラーをデリゲートとして設定したかったので、[dtdev addDelegate:self];を配置しました。viewWillAppearメソッドに[dtdev removeDelegate:self]; を追加しますviewWillDisappearメソッドで。その後、removeDelegate を呼び出すと、バーコード スキャナーが addDelegate を介して再度追加されたとしても、機能しなくなります。

両方のビュー コントローラーをデリゲートとして追加し、デリゲート メソッドに次のようなコードを追加する別の方法がわかりません。--> 続行 : そうでなければ壊れます。(でも、これはばかげていますよね?)

それはバグですか、それとも私は正しく考えていませんか?

4

2 に答える 2

0

デリゲートの追加/削除が機能しないことに驚いています。バグのように聞こえます。それだけを行うナビゲーション コントローラーの例がある場合は、LineaPro に送信することをお勧めします。

addDelegate を再度呼び出したときに、sharedDevice がまだ設定されていて、dtdev が nil ではないことを確認してください。

簡単な解決策は、おそらくあなたが考えたことです。これを両方のデリゲートの先頭に追加します (ナビゲーション コントローラーを使用しているため)。

if (self != self.navigationController.visibleViewController) リターン;

于 2014-01-07T23:27:40.640 に答える
0

私は同じ問題を抱えていたので、別の問題を追加して問題を解決しました:

[dtdev addDelegate:self];

viewDidAppearメソッドで。

これがお役に立てば幸いです。

于 2014-03-11T15:23:57.357 に答える