1.觸控過程
一次完整的觸控過程,會經歷3個狀態:
觸控開始:
-(void)touchesbegan:(nsset *)touches withevent:(uievent *)event
觸控移動:
-(void)touchesmoved:(nsset *)touches withevent:(uievent *)event
觸控結束:
-(void)touchesended:(nsset *)touches withevent:(uievent *)event
觸控取消(可能會經歷):
-(void)touchescancelled:(nsset *)touches withevent:(uievent *)event
2.觸控過程的理解
a.4個觸控事件處理方法中,都有nsset *touches和uievent *event兩個引數。一次完整的觸控過程中,只會產生乙個事件物件,4個觸控方法都是同乙個event引數;
b.如果兩根手指同時觸控乙個view,那麼view只會呼叫一次touchesbegan:withevent:方法,這時touches引數中裝著2個uitouch物件;
c.如果這兩根手指一前一後分開觸控同乙個view,那麼view會分別呼叫2次touchesbegan:withevent:方法,並且每次呼叫時的touches引數中只包含乙個uitouch物件;
d.根據touches中uitouch的個數可以判斷出是單點觸控還是多點觸控;
e.注意: 一般預設情況下, 控制項都不支援多點觸控(為了提高效能), 所以需要手動設定乙個uiview 允許多點觸控!
3. 多點觸控的乙個華麗demo
@inte***ceczview ()
//定義乙個陣列存放image
@property(nonatomic, strong) nsarray* images;
@end
@implementationczview
//懶載入
-(nsarray*)images
if(!_images) {
_images = @[ [uiimageimagenamed:@"spark_green"], [uiimageimagenamed:@"spark_red"] ];
return_images;
//手指按下螢幕
-(void)touchesbegan:(nsset*)touches withevent:(uievent*)event
[self addspark:touches];
//手指在螢幕上移動
-(void)touchesmoved:(nsset*)touches withevent:(uievent*)event
[self addspark:touches];
-(void)addspark:(nsset*)touches
inti = 0;
//獲取觸控物件
for(uitouch* t in touches) {
// 獲取手指的位置
cgpoint p = [t locationinview:t.view];
// 建立乙個imageview
uiimageview* imageview = [[uiimageviewalloc] initwithimage:self.images[i]];
// 讓imageview的center等於手指的位置
imageview.center = p;
// 新增到控制器的view上
[selfaddsubview:imageview];
[uiview animatewithduration:2
animations:^{
imageview.alpha = 0;
completion:^(bool finished) {
[imageview removefromsuperview];
i++;
@end
輸出結果:
多點觸控時代來了,第乙個是什麼呢
是乙個地形系統和多點觸控的地圖編輯器,那將是非常舒服的,和滑鼠完全不同的操作體驗。關於地形,唉。windows phone 7 開放shader還遙遙無期,用vertextexture的方案先放在那裡。實現乙個適合cpu的地圖方式,比如war3那樣,可憐的war3,剛剛才偷了守望者的模型動畫,又開始...
aop的乙個小demo
註解方式通知配置增強 切入點及前置通知,後置通知,返回通知,異常通知,環繞通知的配置 aspect service publicclasslogaspect before dolog publicvoiddobefore after dolog publicvoiddoafter 核心業務正常結束時...
乙個JAVA死鎖的Demo
死鎖的條件肯定是兩個鎖以上時,才會 發生死鎖,以下demo是模擬的兩個鎖,通過兩個執行緒分別呼叫兩個方法,這兩個方法加鎖的順序正好相反,從而造成兩個執行緒相互等待,互不釋放鎖 package com.threaddemo public class deadlocksample private voi...