2012年9月19日 星期三

Disable Select TabBar Item

這邊假如希望Tabbar中,
某幾個項目不能選擇時,
只需將該項目setEnable:NO,
這樣就行了。
[[self.tabBarController.tabBar.items objectAtIndex:3] setEnabled:NO];

MAC系統中文輸入法標點符號

輸入發切換:
, , + option(control)
。 . + option(control)
、 \ + fn

UITabBarController 項目多於五個時

UITabBarController所包含的控制項目若大於五個,
iOS會自動將最右邊的按鈕變成moer,
並將剩下的項目顯示於一包含NavigationController的TableView。
該NavigationController預設有一個edit按鈕,
點選後能接由拖曳邊更TabBarItem的順序。
避免忘記,這邊記錄一下相關設定:
//關閉編輯功能
self.tabBarController.customizableViewControllers = nil;
//變更標題
self.tabBarController.moreNavigationController.navigationBar.topItem.title = @"自訂";
//改變顏色
self.tabBarController.moreNavigationController.navigationBar.tintColor = [UIColor blackColor];

2012年9月7日 星期五

ZXing 使用

使用ZXing來解讀Barcode

加入protocol
並實現以下兩個方法:
//成功解讀Barcode時 - (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result;
//Cancel 按鈕按下時 - (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;

再來就是畫面的建立

//建立掃描畫面
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
[widController.overlayView setDisplayedMessage:@"請將條碼圖示置於框線內"];

//Barcode Reader
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
widController.readers = readers;
[readers release];

//掃瞄完成時,聲音提示
NSBundle *mainBundle = [NSBundle mainBundle];
widController.soundToPlay =[NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];

//將描畫面加入主畫面
[self presentModalViewController:widController animated:YES];
[widController release];

ZXing 匯入方式

ZXing是一個Open Source的條碼讀取器
在匯入專案時常常發生問題
這邊記錄我遇到的問題

匯入步驟:
  1. 取得ZXing
  2. 加入ZXing到專案中
  3. 設定Build Phases
    1. Add Target Dependencies
    2. Add Link Binary With Libraries
  4. 設定Build Setting
  5. import ZXingWidgetController.h & QRCodeReader.h
1.取得ZXing
連至http://code.google.com/p/zxing/取得,目前版本為2.0,我這邊使用1.7

2.加入ZXing到專案中
ZXing支援很多平台,請依序點選進入資料夾中

zxing >iphone > ZXingWidget

將ZXingWidget.xcodeproj拖曳至專案中,如果出現提示,請注意請勿勾選複製選項,請以參考的方式加入。

3.設定Build Phases
選擇專案TAGETS,選擇Build Phases分頁
3.1 在Target Dependencies中,加入ZXingWidget (ZXingWidget)
3.2 在Link Binary With Libraries加入所需framework
  • libZXingWidget.a
  • libiconv.dylib
  • CoreVideo.framework
  • CoreMedia.framework
  • AVFoundation.framework
  • AudioToolbox.framework
  • AddressBook.framework
  • AddressBookUI.framework
4.設定Build Setting
在Build Setting中搜尋"Header Search Paths"
點選"+"號,增加搜尋路徑,這邊記得要提供完整路徑,
Full Path../zxing/cpp/core/src
Full Path../zxing/iphone/ZXingWidget/Classes
加入完成後要確定有被勾選才行

5.import
#import <ZXingWidgetController.h>
#import <QRCodeReader.h>

注意事項:
  1. 資料夾名稱請不要包含"空白",會導致XCode誤判。
  2. 因有使用到C++的編譯器,請記得將副檔名由.m變更為.mm。
  3. #import <qrcodereader.h>請寫在.mm中,不然編譯會錯誤。
  4. ZXingWidget.xcodeproj的Compiler要注意
  5. 目前不確定是否支援ARC與storybard,所以請不要使用該功能。