雖然Lion都出這麼久了,不過應該還是可以寫一下
剛從雪豹升級到Lion,發現三指向上的手勢被換成切桌面,看code實在很不方便,就google一下
在stackoverflow看到這篇:
http://stackoverflow.com/questions/6771057/trackpad-gesture-to-switch-to-header-source/7923619#7923619
文中說Xcode 4.2有修正,不過我的4.3還是不能切,照著下面做了
1.切到要修改的檔案的所在目錄開終端機,輸入:cd /Users/[使用者名稱]/Library/Preferences/ByHost
2.用ls -lah找出要修改的檔案
應該會找到一個.GlobalPreferences.XXXX-XXXX-XXXX-XXXX.plist,X由一串英文數字組成
3.用Xcode開啟該檔案(或用vim直接編輯該檔也可以)
open -a /Developer/Applications/Xcode.app ".GlobalPreferences.XXXX-XXXX-XXXX-XXXX.plist"
4.把com.apple.trackpad.threeFingerVertSwipeGesture改成1,並存檔
5.重開機(沒開機前好像還是不會成功)
2012年4月27日
2012年2月22日
Certificate, Provisioning file, code signed
整理好了就來貼一下:
Apple iOS developer的帳號可分為兩種:
個人開發:99 USD/年,可部屬App到最多100台開發用裝置上
企業用: 299 USD/年,需企業資格,不可上架,但可部屬App到任意裝置上(也有100台開發用裝置Quota)
可參考https://developer.apple.com/programs/ios/enterprise/
Apple iOS developer的帳號可分為兩種:
個人開發:99 USD/年,可部屬App到最多100台開發用裝置上
企業用: 299 USD/年,需企業資格,不可上架,但可部屬App到任意裝置上(也有100台開發用裝置Quota)
可參考https://developer.apple.com/programs/ios/enterprise/
2011年12月28日
iOS developer實機開發前二三事
雖然不太難
不過圖都截了就來寫一寫
說明一下繳了保護費後到開始寫程式前的準備:
1.先登入http://developer.apple.com/,然後進到iOS Provisioning Portal
選取左邊Certificate,網頁會有一連串說明
2.接下來要取得certificate,讓認得準備拿來開發的MAC:
工具程式->鑰匙圈存取->憑證輔助程式->從憑證授權要求憑證
3.輸入E-mail、使用者名稱
比較重要的是:把"已將要求"選擇"儲存到磁碟",下一步後把產生的.cer檔存起來
4.網頁最下面可以找到submit,上傳剛剛的.cer檔後,頁面會跳轉,
如果certificate檔的狀態在pending,重整網頁應該就會變成active可下載的狀態了
5.下載後點兩下,憑證就會被加入,代表認證完成了
6.接下來要產生一個Team provisioning file,讓寫好的App可以通過code sign認證跑在裝置上
7.將裝置接上Mac
8.在orginzer中將任意一個裝置add to protal即可產生認證所有App的Team provisioning file
不過圖都截了就來寫一寫
說明一下繳了保護費後到開始寫程式前的準備:
1.先登入http://developer.apple.com/,然後進到iOS Provisioning Portal
選取左邊Certificate,網頁會有一連串說明
2.接下來要取得certificate,讓認得準備拿來開發的MAC:
工具程式->鑰匙圈存取->憑證輔助程式->從憑證授權要求憑證
3.輸入E-mail、使用者名稱
比較重要的是:把"已將要求"選擇"儲存到磁碟",下一步後把產生的.cer檔存起來
4.網頁最下面可以找到submit,上傳剛剛的.cer檔後,頁面會跳轉,
如果certificate檔的狀態在pending,重整網頁應該就會變成active可下載的狀態了
5.下載後點兩下,憑證就會被加入,代表認證完成了
6.接下來要產生一個Team provisioning file,讓寫好的App可以通過code sign認證跑在裝置上
7.將裝置接上Mac
8.在orginzer中將任意一個裝置add to protal即可產生認證所有App的Team provisioning file
2011年9月8日
XML Parser心得分享(2)-TBXML
另外一套是蠻多人推薦的TBXML
主要用法就是讀入檔案,然後用[TBXML elementName:element], [TBXML textForElement:element]取值
詳細可參照TBXML網站
因為開始第一次用,而且每次都要針對新的XML重新寫一遍delegate覺得很麻煩
就找了一下資料 ,後來參照了iOS下超级簡潔的xml解析框架:TBXML
修改了一下原始碼如下:
執行完會存成一個巢狀的NSDictionary結構
這樣應該可以處理稍微複雜一點、包含attribute的xml
主要用法就是讀入檔案,然後用[TBXML elementName:element], [TBXML textForElement:element]取值
詳細可參照TBXML網站
因為開始第一次用,而且每次都要針對新的XML重新寫一遍delegate覺得很麻煩
就找了一下資料 ,後來參照了iOS下超级簡潔的xml解析框架:TBXML
修改了一下原始碼如下:
- (void)parse{
if (xmlData.rootXMLElement) {
TBXMLElement *element = xmlData.rootXMLElement;
[self recurrence:element];
}
else {
NSLog(@"Format Error!");
}
}
//遞迴
- (void)recurrence:(TBXMLElement *)element {
do {
//NSLog(@"<%@>:{%@}",[TBXML elementName:element], [TBXML textForElement:element]);
// Display the name of the element
if ([dic objectForKey:[TBXML elementName:element]]) {//如key name重複,命名為parent_chlid
[dic setObject:[TBXML textForElement:element] forKey:[NSString stringWithFormat:@"%@_%@",[TBXML elementName:element->parentElement],[TBXML elementName:element]]];
}
else{
[dic setObject:[TBXML textForElement:element] forKey:[TBXML elementName:element]];
}
//迭代處理所有屬性
TBXMLAttribute * attribute = element->firstAttribute;
while (attribute) {
//顯示
//NSLog(@"<%@>->[%@ = %@]", [TBXML elementName:element], [TBXML attributeName:attribute], [TBXML attributeValue:attribute]);
//迭代
attribute = attribute->next;
}
//遞迴處理子樹
if (element->firstChild) {
[self recurrence:element->firstChild];
}
//迭代處理sibling
} while ((element = element->nextSibling));
}
執行完會存成一個巢狀的NSDictionary結構
這樣應該可以處理稍微複雜一點、包含attribute的xml
2011年8月29日
XML Parser心得分享(1)-NSXML
有網友留言問到XML處理,就把之前的草稿完成一下
怕文章太長不好讀,拆成兩篇寫
寫到現在遇過挺多處理case要xml資料
目前用過的XML parser有內建的NSXML和TBXML
這篇先簡單說明一下NSXMLParserDelegate三個重要的函式:
怕文章太長不好讀,拆成兩篇寫
寫到現在遇過挺多處理case要xml資料
目前用過的XML parser有內建的NSXML和TBXML
這篇先簡單說明一下NSXMLParserDelegate三個重要的函式:
標籤:
ios,
NSDictionary,
xml
2011年8月16日
iOS 5關閉特定檔案的ARC
這篇文章參考以下影片完成:IOS5 -- How To Turn Off ARC On Individual Files
從iOS 4到iOS 5首先要面對的就是新增的automatic reference counting(第一次開專案看到release被deprecate有嚇到:P)iOS 5新專案有ARC,但舊的code卻沒有,筆記一下關閉特定檔案ARC的作法:以(Xcode 4為例)
點選專案檔,選target,在Build Phase中找到compile source
2011年8月11日
NSArray排序筆記
本來以為這種功能要自己實做的
沒想到iOS SDK關於array的排序還挺簡單的
整理幾個基本的常用用法:
1.字串(NSString)、日期(NSDate)排序
2.使用NSSortDescriptor達到降冪排序
3.元素為自訂物件的排序
沒想到iOS SDK關於array的排序還挺簡單的
整理幾個基本的常用用法:
1.字串(NSString)、日期(NSDate)排序
2.使用NSSortDescriptor達到降冪排序
3.元素為自訂物件的排序
2011年7月14日
iOS幾個UI應用整理
整理幾個比較特別的UI用法:
1.Custom UITableViewCell selected color
UIView *selectBgv=[[UIView alloc]init];
selectBgv.backgroundColor=[UIColor lightGrayColor];
cell.selectedBackgroundView=selectBgv;
[selectBgv release];
要注意的是,UITableViewStylePlain下cell.selectedBackgroundView是NIL,要自己alloc,UITableViewStyleGrouped則不用
2.Disable UIWebView scroll
[[[WebView subviews] lastObject] setScrollingEnabled:NO];
3.Remove UISearchBar background
[[searchbar.subviews objectAtIndex:0]removeFromSuperview];

- 自訂UITableViewCell的選取顏色
- 關閉UIWebView的scroll功能
- 移除 UISearchBar背景色
- UIColor自訂顏色注意事項
- 取得iPad, iPhone解析度
- 自訂UISegmentControl背景色
1.Custom UITableViewCell selected color
UIView *selectBgv=[[UIView alloc]init];
selectBgv.backgroundColor=[UIColor lightGrayColor];
cell.selectedBackgroundView=selectBgv;
[selectBgv release];
要注意的是,UITableViewStylePlain下cell.selectedBackgroundView是NIL,要自己alloc,UITableViewStyleGrouped則不用
2.Disable UIWebView scroll
[[[WebView subviews] lastObject] setScrollingEnabled:NO];
3.Remove UISearchBar background
[[searchbar.subviews objectAtIndex:0]removeFromSuperview];
2011年7月10日
CFWriteStreamOpen連線建很久
把前陣子遇到的問題筆記一下 :
前陣子嘗試著要做iOS裝置間訊息的傳遞
一開始找到了這個聊天室的範例:
http://mobileorchard.com/tutorial-networking-and-bonjour-on-iphone/
用Bonjour network發佈服務,傳輸部份則用CFStream來完成
run範例後跑起來有個問題:選擇了聊天室後,連線卻要等1分鐘左右才會建立
設了一些NSLog都跑完了,也可以打字,不過傳輸的文字還是傳不過去
但一分鐘後連線建立,聊天訊息傳遞得很順暢且很即時
前陣子嘗試著要做iOS裝置間訊息的傳遞
一開始找到了這個聊天室的範例:
http://mobileorchard.com/tutorial-networking-and-bonjour-on-iphone/
用Bonjour network發佈服務,傳輸部份則用CFStream來完成
run範例後跑起來有個問題:選擇了聊天室後,連線卻要等1分鐘左右才會建立
設了一些NSLog都跑完了,也可以打字,不過傳輸的文字還是傳不過去
但一分鐘後連線建立,聊天訊息傳遞得很順暢且很即時
2011年6月23日
In-app purchase和server測試的注意事項
之前有用到就整理起來,主要針對開始撰寫程式前需要的準備事項
改天再針對程式方面發一篇
整個過程,主要可以分成三種角色:Apple、商品提供者、程式開發者
下面列一下各個方面的一些注意事項:
改天再針對程式方面發一篇
整個過程,主要可以分成三種角色:Apple、商品提供者、程式開發者
下面列一下各個方面的一些注意事項:
標籤:
in-app pruchase,
ios,
objective-c
2011年6月17日
iOS App開啟載入的圖片(launch image)
如何替iOS App加入一個啟動時的載入圖片?
只要把圖片存成下列檔名後,加入專案中即可:
Default.png 320*480 iPhone, iPod
Default@2x.png 640*960 iPhone, iPod Retina Display
Default.png iPad Portriat
Default-Portrait.png 768*1004 iPad Portrait
Default-Landscape.png 1004*768 iPad Landscape
在xcode 4開始更簡單,只要在project或target裡Summary->Launch Images右鍵就可以直接加了
以為很麻煩的功能,其實出乎意料的簡單,記一下
只要把圖片存成下列檔名後,加入專案中即可:
Default.png 320*480 iPhone, iPod
Default@2x.png 640*960 iPhone, iPod Retina Display
Default.png iPad Portriat
Default-Portrait.png 768*1004 iPad Portrait
Default-Landscape.png 1004*768 iPad Landscape
在xcode 4開始更簡單,只要在project或target裡Summary->Launch Images右鍵就可以直接加了
以為很麻煩的功能,其實出乎意料的簡單,記一下
2011年6月13日
iOS 5 beta SDK touble shooting
如果有用到libz.1.2.3.dylib這個framework(例如ASIHTTP)
iOS SDK升級到5 beta會遇到下列錯誤:
ld: library not found for -lz.1.2.3
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1
或是用了ASIHTTP:
iOS SDK升級到5 beta會遇到下列錯誤:
ld: library not found for -lz.1.2.3
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1
或是用了ASIHTTP:
2011年5月17日
iOS keychainWrapper trouble shooting
之前把一個project用官方提供的Keychain Services加上了自動記憶帳號密碼的功能
一直都正常運作,直到某一天一台裝置忽然跑出了不該出現的assert:
結果錯誤訊息是-25300(errSecItemNotFound, The item cannot be found.)
然後試了:
得到-25299(errSecDuplicateItem, The item already exists.)
想說這下是見鬼了,查了一堆文件也沒找到解答,其他裝置好像也沒災情
解不掉就只好暫時丟著不管
一直都正常運作,直到某一天一台裝置忽然跑出了不該出現的assert:
NSAssert(SecItemAdd((CFDictionaryRef)
[self dictionaryToSecItemFormat:keychainData],NULL) == noErr, @"Couldn't add the Keychain Item." );當機,帳號密碼存不起來想說嘗試著要把舊的刪掉加新的看看:
SecItemDelete((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainData]));結果錯誤訊息是-25300(errSecItemNotFound, The item cannot be found.)
然後試了:
SecItemAdd((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainData],NULL));得到-25299(errSecDuplicateItem, The item already exists.)
想說這下是見鬼了,查了一堆文件也沒找到解答,其他裝置好像也沒災情
解不掉就只好暫時丟著不管
訂閱:
文章 (Atom)