标签: touchesbegan

touchesMoved退出自我视图

我正在我的工作地点开展一个重要的项目,并且遇到了一个我正在堆叠的问题:

我有一个视图中的2个视图(1个带有图像的滚动视图,另一个只是一个UIImageView),我想使它能够将图像从滚动视图移动到UIImageView),我可以成功识别并移动图像scrollView,但问题是当移动离开scrollView时,丢失的图像消失在后面,无法到达imageView的道路.

有什么建议吗?

iphone objective-c gesture touchesmoved touchesbegan

5
推荐指数
0
解决办法
281
查看次数

Swift Sprite Kit开始触摸功能

我正在搞乱一个xcode项目,当我触摸它时,我正试图让一个红色的球SKShapeNode四处移动.触摸我自己的源代码开始上课并没有做到.我的代码有什么缺陷,我需要做些什么来修复它.

import SpriteKit

class GameScene: SKScene {

    //Rectangle Skeletions
    var leftWallRect = CGRect(x: 0, y: 0, width: 40, height: 1000)

    var ball = SKShapeNode(circleOfRadius: 25);


    override func didMoveToView(view: SKView) {

        // Declare the Sprites in your scene
        var ball = SKShapeNode(circleOfRadius: 25);
        let leftWall = SKShapeNode(rect: leftWallRect);
        let rightWall = SKShapeNode(rect: leftWallRect);
        let pin = SKSpriteNode(imageNamed: "pin");

        // Ball Properties
        ball.strokeColor = UIColor.blackColor()
        ball.fillColor = UIColor.redColor()
        ball.position = CGPointMake(self.frame.width / 2 , self.frame.height / 4 - 100 )
        self.addChild(ball)

        // …
Run Code Online (Sandbox Code Playgroud)

touchesmoved touchesbegan sprite-kit swift

5
推荐指数
1
解决办法
351
查看次数

当触摸次数发生变化时,为什么touchesBegan不会触发?

出于某种原因,我的touchesBegan方法似乎没有正确响应.如果我用两根手指触摸屏幕,然后将其抬起并再次放下,触摸正确调用.如果我用一根手指触摸屏幕,然后添加第二根手指,touchesBegan就不会被调用.我需要检查一些标志吗?以下示例说明了我的问题:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
     NSLog(@"touch");
}
Run Code Online (Sandbox Code Playgroud)

有什么想法发生了什么?如果重要的话,我正在使用iOS 4.2进行iPad测试.

iphone objective-c ipad touchesbegan touches

4
推荐指数
1
解决办法
1729
查看次数

触摸并拖动UIButton,但在释放手指时不要触发它

我试图允许UIButton我的一个视图上的某些实例被触摸并拖动到屏幕上(最终有动量,但这是为了以后!).我有一个非常简单的工作方式,如下所示,但问题是通过触摸按钮开始拖动它,它附着在手指上,并通过抬起手指,触发"Touch Up Inside"事件,这是我想要在实际点击按钮时执行的代码.

简而言之:我如何区分水龙头和拖拽/释放?我是否需要将水龙头更改为短按手势识别器,或类似的?码:

在viewDidLoad中:

[firstButton addTarget: self action: @selector(wasDragged: withEvent:) forControlEvents: UIControlEventTouchDragInside];
Run Code Online (Sandbox Code Playgroud)

我的wasDragged方法:

- (void)wasDragged:(UIButton *)button withEvent:(UIEvent *)event
{
    if (button == letter1Button) {
        UITouch *touch = [[event touchesForView:button] anyObject];

        CGPoint previousLocation = [touch previousLocationInView:button];
        CGPoint location = [touch locationInView:button];
        CGFloat delta_x = location.x - previousLocation.x;
        CGFloat delta_y = location.y - previousLocation.y;

        button.center = CGPointMake(button.center.x + delta_x, button.center.y + delta_y);
    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c uitouch touchesbegan ios

4
推荐指数
1
解决办法
7406
查看次数

在UITableViewCell中检测UITextView中的数据

我有一个UITextView内部UITableViewCell子类.它已经editable并且userInteractionEnabled都设置为NO.这允许UITextView检测诸如链接和电话号码之类的数据.正确检测数据,但由于禁用了userInteraction,因此无法响应该数据的点击.如果我设置userInteractionEnabledYES,它工作正常,但UITableViewCell由于UITextView吞下触摸,因此无法选择.

如果用户点击它,我想按照链接,但didSelectRowAtIndexPath:如果点击基本文本,我想要被调用.

我认为正确的方法是子类化UITextView并将触摸传递给单元格,但我似乎无法找到一种方法来检测水龙头是否在链接上.

这是一个类似的问题,但答案只是将所有触摸传递给单元格.我想只传递触摸,如果它们不在一块检测到的数据上. 在UITableViewCell中的UITextView上启用dataDetectorTypes

uitableview uitextview datadetectortypes touchesbegan ios

4
推荐指数
1
解决办法
1567
查看次数

可拖动的UIView在添加到UIScrollView后停止发布touchesBegan

在Xcode 5.1中,我为iPhone 创建了一个简单的测试应用程序:

应用截图

结构是:scrollView -> contentView -> imageView -> image 1000 x 1000在顶部.

在单一视图应用程序的底部,我有七个可拖动的自定义UIViews.

使用方法在Tile.m中实现拖动touchesXXXX.

我的问题是:一旦我contentView在我的ViewController.m文件中添加了一个可拖动的磁贴- 我就不能再拖动了它:

- (void) handleTileMoved:(NSNotification*)notification {
    Tile* tile = (Tile*)notification.object;
    //return;

    if (tile.superview != _scrollView && CGRectIntersectsRect(tile.frame, _scrollView.frame)) {
        [tile removeFromSuperview];
        [_contentView addSubview:tile];
        [_contentView bringSubviewToFront:tile];
    }
}
Run Code Online (Sandbox Code Playgroud)

touchesBegan没有呼吁Tile了,因为如果scrollView将掩盖这一事件.

我已经四处搜索,并建议UIScrollView使用以下方法扩展该类(在我的自定义GameBoard.m中):

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiscrollview touchesbegan ios

4
推荐指数
1
解决办法
620
查看次数

Swift中的子类UIScrollView用于触摸开始和触摸Moved

在此输入图像描述我正在使用Swift 1.2

我正在尝试使用这个UIScrollview touchesbegan,touchesmoved,touchesended actions以及接受的答案的第2条评论中的链接.

我正在使用带有自动布局的故事板,我在自定义类中为UIScrollView设置了我的自定义类.

我没有收到包含我的自定义UIScrollView的UIViewController中的这些触摸事件

编辑:更新了我的代码,了解我如何使用@Victor Sigler的答案.

自定义ScrollView代码:

import UIKit

protocol PassTouchesScrollViewDelegate {

func scrollTouchBegan(touches: Set<NSObject>, withEvent event: UIEvent)
func scrollTouchMoved(touches: Set<NSObject>, withEvent event: UIEvent)
}

class PassTouchesScrollView: UIScrollView {

var delegatePass : PassTouchesScrollViewDelegate?

override init(frame: CGRect) {
    super.init(frame: frame)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    self.delegatePass?.scrollTouchBegan(touches, withEvent: event)


}

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {

    self.delegatePass?.scrollTouchMoved(touches, withEvent: event)

}

}
Run Code Online (Sandbox Code Playgroud)

我的ViewController:

import …
Run Code Online (Sandbox Code Playgroud)

uiscrollview touchesbegan swift

4
推荐指数
2
解决办法
9799
查看次数

`touchesBegan:withEvent:`在屏幕左边延迟

我遇到的问题是,当您触摸屏幕的左边缘时,第一次打电话或touchesBegan:withEvent:打开电话会延迟.这似乎是iOS 10的一个新问题,并且只发生在具有3D Touch(iPhone 6s和更新版本)的设备上.实际上,如果在General-> Accessibility中禁用3D Touch,问题就会消失.UIViewUIViewController

但是,使用时似乎不会发生此问题UIGestureRecognizers.我现在的解决方法是创建一个UIGestureRecognizer子类来覆盖touches*方法并将它们转发到我的旧实现.

这只是一个错误还是有办法摆脱延迟?

iphone touchesbegan ios 3dtouch ios10

4
推荐指数
1
解决办法
1220
查看次数

[IOS SDK] - touchesBegan与特定对象?

当我触摸屏幕上的任何地方触摸触发事件时触发.但我无法管理如何像UIImageView一样触摸特定对象?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

 UITouch *touch = [[event allTouches] anyObject];

 CGPoint location = [touch locationInView: touch.view];

 imageView.center = location;

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

 [self touchesBegan:touches withEvent:event];

}
Run Code Online (Sandbox Code Playgroud)

xcode nsset touchesmoved touchesbegan ios4

3
推荐指数
1
解决办法
1万
查看次数

在用户点击 UIView (Swift) 内部的任何地方添加小圆圈/点

我试图弄清楚如何在 UIView 上添加一个小圆圈/点,但只有当用户点击 UIView 内部时。点应该放在用户点击的任何地方。不幸的是,我不知道如何做到这一点。

任何带有代码的示例都非常有帮助!我正在使用斯威夫特。

xcode drawing uiview touchesbegan swift

3
推荐指数
1
解决办法
2364
查看次数