Iphone 如何获得任何控制目标c的触摸屏位置?

Iphone 如何获得任何控制目标c的触摸屏位置?,iphone,objective-c,uigesturerecognizer,Iphone,Objective C,Uigesturerecognizer,嗨,我想获得任何控件或任何发生触摸的位置/点 为此,我已经实现了这一点,但我没有得到正确的接触点 // Create gesture recognizer, notice the selector method UITapGestureRecognizer *oneFingerTwoTaps = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelea

嗨,我想获得任何控件或任何发生触摸的位置/点

为此,我已经实现了这一点,但我没有得到正确的接触点

   // Create gesture recognizer, notice the selector method
UITapGestureRecognizer *oneFingerTwoTaps =
[[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease];
oneFingerTwoTaps.delegate=self;
// Set required taps and number of touches
[oneFingerTwoTaps setNumberOfTapsRequired:1];
[oneFingerTwoTaps setNumberOfTouchesRequired:1];
[[self view] addGestureRecognizer:oneFingerTwoTaps];


当我试图点击任何UIButton、UIImage、UITableView时,它没有给我正确的点击点。我有什么做错了吗?请帮帮我。多谢各位

您的代码将在视图中打印发生触摸的位置。如果你在中间触摸一个50x100大小的按钮,它会打印“点25,50”。

如果要查找UIScreen的触摸位置,必须转换以下值:

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    CGPoint point = [touch locationInView:touch.view];
    CGPoint pointOnScreen = [touch.view convertPoint:point toView:nil];
    NSLog(@"Point - %f, %f", pointOnScreen.x, pointOnScreen.y);
    NSLog(@"Touch");
    return NO; // handle the touch
}
或者直接获取窗口(屏幕)空间中的坐标:


这是@DrummerB答案的快速版本

// add as property
var tapRecognizer: UIGestureRecognizer! 

// add in viewDidLoad() 
tapRecognizer = UIGestureRecognizer()
tapRecognizer.delegate = self // inherit UIGestureRecognizerDelegate
self.view.addGestureRecognizer(tapRecognizer)

// listen for delegate method
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        let pointOnScreen: CGPoint = touch.location(in: nil)
        print("Point - \(pointOnScreen.x), \(pointOnScreen.y)")
        print("Touch")
        return false
}

//这对我有用。xcode 9.2,ios 11.2

谢谢你,它对我来说很酷。我能得到正确的休息点我能做到的…thanx伙计。。。
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    CGPoint pointOnScreen = [touch locationInView:nil];
    NSLog(@"Point - %f, %f", pointOnScreen.x, pointOnScreen.y);
    NSLog(@"Touch");
    return NO; // handle the touch
}
// add as property
var tapRecognizer: UIGestureRecognizer! 

// add in viewDidLoad() 
tapRecognizer = UIGestureRecognizer()
tapRecognizer.delegate = self // inherit UIGestureRecognizerDelegate
self.view.addGestureRecognizer(tapRecognizer)

// listen for delegate method
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        let pointOnScreen: CGPoint = touch.location(in: nil)
        print("Point - \(pointOnScreen.x), \(pointOnScreen.y)")
        print("Touch")
        return false
}