Call View 可以替您目前所操作的介面加上簡單的註解,而這種方法在 Google Map 的應用程式裡就很常被使用,下列程式碼就提供了一個簡單的示範,好讓 UICalloutView 出現在我們所要的位置上,其程式碼如下。
由於 UICalloutView 這個類別是屬於非正式(隱藏)的類別,所以在使用上必須重新進行標頭資訊的定義,因此我們首先新增一個標頭檔 UICalloutView.h,並鍵入以下資訊。
#import <foundation/foundation.h>
@interface UICalloutView : UIControl
- (UICalloutView *)initWithFrame:(struct CGRect)aFrame;
- (void)fadeOutWithDuration:(float)duration;
- (void)setTemporaryTitle:(NSString *)fp8;
- (NSString *)temporaryTitle;
- (void)setTitle:(NSString *)fp8;
- (NSString *)title;
- (void)setSubtitle:(NSString *)fp8;
- (NSString *)subtitle;
- (void)addTarget:(id)target action:(SEL)selector;
- (void)removeTarget:(id)target;
- (void)setDelegate:(id)delegate;
- (id)delegate;
- (void)setAnchorPoint:(struct CGPoint)aPoint boundaryRect:(struct CGRect)aRect animate:(BOOL)yorn;
@end
在完成建立 UICalloutView.h 之後,就可以參考以下程式碼製作提示視窗 Tips View 了,別忘記在要使用 UICalloutView Class 的類別中引用 UICalloutView.h。
#import "UICalloutView.h"
//點擊畫面時所觸發的事件
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
//取得點擊的座標位置
CGPoint point = [[touches anyObject] locationInView:self.view];
//建立一個UICalloutView並設定垂直與水平置中
UICalloutView *myTaps = [[UICalloutView alloc] initWithFrame:CGRectZero];
myTaps.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
myTaps.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
//設定UICalloutView的文字內容
[myTaps setTemporaryTitle:@"Furnace iOS 棒棒!!"];
//設定在多少時間內漸隱
[myTaps fadeOutWithDuration:3.0f];
//設定UICalloutView出現的位置與最大邊界
[myTaps setAnchorPoint:point boundaryRect:CGRectMake(0.0f, 0.0f, 320.0f, 100.0f) animate:YES];
//顯示於畫面後並釋放記憶體
[self.view addSubview:myTaps];
[myTaps release];
}
ps:其實 UICalloutView 一直都是存在的,只是缺少標頭檔我們沒辦法呼叫其中的 Method 如此而已,另外有熱心讀者指出,此方法屬於非正式方式,因此在 Apple 上架審核的過程中可能會無法順利通過,若要解決此問題可以參考 CMPopTipView 提示訊息的 Open Source,製作新的 UICalloutView 類別。
"若要解決此問題可以參考留言內的 Open Source 連結"
回覆刪除請問去哪裡看留言阿 @@ 謝謝
哈哈,我昏頭了~因為留言系統重新換過的關係,感謝您發現這個問題,連接我已經補上了XD,真的非常抱歉~~
刪除另外提醒您,此方式在ios 5.1同樣屬於非正式方法,如果想要上架還是需要使用連結內的 open source 才行唷。