NSString* class = @"myViewController"; Class detailClass = NSClassFromString(class); UIViewController* detailViewController = [[detailClass alloc] init];
XJIMI
iPhone 開發筆記
2012年2月29日 星期三
NSString 實體化 Objective-c class
2012年2月24日 星期五
監聽 UIKeyboard 事件
點擊 UITextField 時會出現鍵盤,想要在鍵盤上放 UIToolbar 並跟隨鍵盤上下滑動,可以使用以下方法:
建立2個監聽,當UIKeyboard出現或消失時都會通知selector裡的method
NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [center addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
建立2個監聽,當UIKeyboard出現或消失時都會通知selector裡的method
- (void)keyboardWillShow:(NSNotification *)notification { //透過 notification userInfo 可以得到UIKeyboard的資訊 NSDictionary *userInfo = [notification userInfo]; NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; CGRect kf = [aValue CGRectValue]; [self slideViewWithOptions:userInfo PosY:kf.size.height]; } - (void)keyboardWillHide:(NSNotification *)notification { NSDictionary *userInfo = [notification userInfo]; [self slideViewWithOptions:userInfo PosY:0]; } - (void)slideViewWithOptions:(NSDictionary *)options PosY:(CGFloat)PosY { NSTimeInterval animationDuration; UIViewAnimationCurve animationCurve; CGRect keyboardEndFrame; //取得UIKeyboard滑動的動畫曲線、秒數與位置 [[options objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve]; [[options objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration]; [[options objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame]; int toolBarHeight = toolBar.frame.size.height; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationCurve:animationCurve]; [UIView setAnimationDuration:animationDuration]; CGRect frame = toolBar.frame; frame.origin.y = CGRectGetHeight(self.view.frame) - toolBarHeight - PosY; toolBar.frame = frame; [UIView commitAnimations]; }
UIWebview 清除 Cookie 暫存資料
使用 UIWebview 有遇到登入帳密時,其實就跟web登入一樣會自動暫存帳密的cookie
如果不想讓user可以自動登入,則必須清除暫存在iphone裡的cookie
清除暫存cookie方法:
參考資料:http://stackoverflow.com/questions/7567129/delete-cookies-uiwebview
如果不想讓user可以自動登入,則必須清除暫存在iphone裡的cookie
清除暫存cookie方法:
NSHTTPCookieStorage *cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *loginCookies = [cookies cookiesForURL:[NSURL URLWithString:[your requestURL]]]; for (NSHTTPCookie* cookie in loginCookies) { [cookies deleteCookie:cookie]; } return request;
參考資料:http://stackoverflow.com/questions/7567129/delete-cookies-uiwebview
2012年2月9日 星期四
ios 重繪等比例縮放照片
選取手機相簿裡尺寸較為大張的照片
且push或presentModalViewController時,
在滑動整個畫面的過程會出現非常不順的情形
原因在於圖片的size太大了
解決方法就是重繪照片並且resize就可以囉
且push或presentModalViewController時,
在滑動整個畫面的過程會出現非常不順的情形
原因在於圖片的size太大了
解決方法就是重繪照片並且resize就可以囉
- (void) resizeImage:(UIImage *)newImage { float maxSizeWidth = 640; float maxSizeHeight = 640; if (newImage.size.width > maxSizeWidth || newImage.size.height > maxSizeHeight) { float actualHeight = newImage.size.height; float actualWidth = newImage.size.width; float imgRatio = actualWidth/actualHeight; float maxRatio = maxSizeWidth/maxSizeHeight; if(imgRatio!=maxRatio) { if(imgRatio < maxRatio) { imgRatio = maxSizeHeight / actualHeight; actualWidth = imgRatio * actualWidth; actualHeight = maxSizeHeight; } else { imgRatio = maxSizeWidth / actualWidth; actualHeight = imgRatio * actualHeight; actualWidth = maxSizeWidth; } } CGRect rect = CGRectMake(0, 0, (int)actualWidth, (int)actualHeight); UIGraphicsBeginImageContext(rect.size); [newImage drawInRect:rect]; uploadImageView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } }
Missing AccessibilitySettingsLoader bundle with iOS 5.0.1 debugging
在實機上測試時遇到的狀況
warning: Unable to read symbols for /Users/xjimi/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader (file not found).
warning: No copy of AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader found locally, reading from memory on remote device. This may slow down the debug session.
問題在於此目錄的底下沒有 AccessibilityBundles
/Users/[your login name]/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/
所以只要到這個目錄把 AccessibilityBundles 複製到上述的目錄底下即可
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/AccessibilityBundles
warning: Unable to read symbols for /Users/xjimi/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader (file not found).
warning: No copy of AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader found locally, reading from memory on remote device. This may slow down the debug session.
問題在於此目錄的底下沒有 AccessibilityBundles
/Users/[your login name]/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/
所以只要到這個目錄把 AccessibilityBundles 複製到上述的目錄底下即可
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/AccessibilityBundles
訂閱:
文章 (Atom)