是否可以獲得觸摸的x和y座標?如果有的話,請提供一個非常簡單的例子,座標只記錄在控制檯上。是否可以獲取觸摸的x和y座標?
回答
使用的touchesBegan事件
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
NSLog(@"Touch x : %f y : %f", touchPoint.x, touchPoint.y);
}
觸摸啓動時觸發此事件。
使用手勢
註冊您的UITapGestureRecognizer在viewDidLoad:
方法
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognizer:)];
[self.view setUserInteractionEnabled:YES];
[self.view addGestureRecognizer:tapGesture];
}
建立tapGestureRecognizer功能
// Tap GestureRecognizer function
- (void)tapGestureRecognizer:(UIGestureRecognizer *)recognizer {
CGPoint tappedPoint = [recognizer locationInView:self.view];
CGFloat xCoordinate = tappedPoint.x;
CGFloat yCoordinate = tappedPoint.y;
NSLog(@"Touch Using UITapGestureRecognizer x : %f y : %f", xCoordinate, yCoordinate);
}
從你給出的第一種方法開始,使用觸摸開始,我怎樣才能使x和y位置的全局變量? – AwesomeTN
在你的.h文件中創建一個CGPoint變量,並在上面的方法中指定它 – icodebuster
觸動開始很好,但我無法觸摸已着手工作,幾乎不是完全一樣的東西? – AwesomeTN
這裏是一個非常簡單的例子(將它放在您的視圖控制器內):
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:self.view];
NSLog(@"%@", NSStringFromCGPoint(currentPoint));
}
這會觸發每次移動觸摸屏。您也可以使用在觸摸開始時觸發的touchesBegan:withEvent:
和在觸摸結束時觸發的touchesEnded:withEvent:
(即手指擡起)。
您也可以使用UIGestureRecognizer
來做到這一點,這在很多情況下更實用。
我c/p這到我的視圖控制器,我得到了與NSLog的錯誤,但它通過將字符串更改爲NSSringFromCGPoint解決。但我仍然沒有收到控制檯中的任何東西,我錯過了什麼?感謝您的幫助 – AwesomeTN
您不應該添加任何額外的代碼來完成此項工作。其他東西是否可以捕獲觸摸事件(例如,是否有像按鈕這樣的子視圖可以阻止觸摸進入viewController的視圖)? – Ander
本質上,添加到viewController的'self.view'中的任何視圖都沒有'.userInteractionEnabled = NO'會捕獲觸摸並阻止它進入上面答案中給出的方法。 – Ander
首先,您需要將手勢識別器添加到所需的視圖。
UITapGestureRecognizer *myTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapRecognizer:)];
[self.myView setUserInteractionEnabled:YES];
[self.myView addGestureRecognizer:myTap];
然後在手勢識別方法您對locationInView:
- (void)myTapRecognizer:(UIGestureRecognizer *)recognizer
{
CGPoint tappedPoint = [recognizer locationInView:self.myView];
CGFloat xCoordinate = tappedPoint.x;
CGFloat yCoordinate = tappedPoint.y;
}
一個電話你可能想看看蘋果的UIGestureRecognizer Class Reference
- 1. 獲取觸摸輸入的x和y座標(Android studio,Java)
- 2. 是否可以更改特定x和y座標的顏色?
- 3. 如何使用Android中的Service類獲取觸摸事件(X和Y座標)?
- 4. 獲取UIButton的x和y座標
- 5. 獲取HTML5中的x和y座標
- 6. Android:獲取TextView的X和Y座標?
- 7. 如何獲得屏幕觸摸的x,y座標?
- 8. Java獲取x和y座標
- 9. 使用TapGestureRecognizer獲取座標x和y
- 10. 獲取X和Y座標onClick
- 11. 獲取X和Y座標視圖
- 12. Windows 8獲取絕對X Y觸摸屏的座標(不管窗口)
- 13. iPhone MapKit是否可以映射一系列觸摸的座標?
- 14. Android:獲取視圖的x,y座標
- 15. 如何獲取JButton的(x,y)座標
- 16. 是否可以從設置X,Y座標
- 17. 獲取觸摸座標(以0-480和0-320的形式)
- 18. 是否有可能在Windows中獲得浮動觸摸座標?
- 19. 獲取奇怪的觸摸座標
- 20. iOS /移動設備的X/Y觸摸座標
- 21. 從CvPoint獲取X Y座標
- 22. 如何獲取x,y座標
- 23. 在ImageView touch上獲取X/Y座標
- 24. 從列表中獲取(x,y)座標
- 25. 獲取X Y座標w.r.t圖像
- 26. 檢查屏幕座標(x,y)觸摸Matrix4x4(3d對象)
- 27. Android(x,y)連續觸摸(拖動)座標
- 28. 鼠標/觸摸座標在cocos2d-x
- 29. 獲取座標,連續兩次觸摸
- 30. 捏縮放 - 獲取觸摸座標
你看了UITouch類參考? – rdelmar