小编Pla*_*reu的帖子

SetNeedsDisplay不起作用

我看到很多线程与这个问题有关,但没有一个解决我的问题(我认为).

我的情况应该很简单,UIView我的控制器中有一个Custom ,从我的控制器,我使用[ self.myView setNeedsDisplay],它完美地工作.

当我试图从内部调用它时,我遇到了问题UIView...我从另一个类发送了一个通知,我的View(这个工作)收到了它传递的信息,我更新内部这个视图的属性,而不是我所谓的[自我setNeedsDisplay]希望我的屏幕更新与新状态,但没有发生任何事情,我NSLOG在我的drawRec方法中使用了一个内部,并且它此时没有被调用,它只是当我的控制器类调用时调用setNeedsDisplay,当发生这种情况时,之前应该发生的更新显示在屏幕上...我不知道为什么它之前没有更新...

这是一些代码:

我的控制器要求更新:(工作正常!)

- (void)addNodeToNetwork:(DTINode *)node
{
[self.myNetwork addNodeInTheNetwork:node];
self.gridView.nodesToDraw = [self.myNetwork.nodesInNetwork copy];

CGRect tempRec = CGRectMake(node.nodePosition.x, node.nodePosition.y node.nodePosition.x, node.nodePosition.y);
NSValue *rectObj = [NSValue valueWithCGRect:tempRec]; //transforma o cgrect num objeto

[self.gridView.fatherNodes setValue:rectObj forKey:node.nodeName];
[self.gridView setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)

我的通知方法试图更新我的绘图:(不工作!)

- (void) receiveTestNotification:(NSNotification *) notification
{
NSDictionary *userInfo = notification.userInfo;
DTINode *notificationNode = [userInfo objectForKey:@"myNode"];
NSLog(@"Im Here!");
for (DTINode *node in self.nodesToDraw)
{
    NSLog(@"Here too"); …
Run Code Online (Sandbox Code Playgroud)

ios setneedsdisplay

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

三指捏手势

我在尝试实施3指捏时遇到了一些问题.

我一直在使用2指捏两指旋转,单独!(没有需要或想要的同时手势)问题是,很多时候,系统识别错误的运动,因为它们都非常相似,所以我最终不得不移开我的手指并再次按下以试图使系统识别旋转(通常首先识别捏)

我搜索了很多,看看它是否delayBegin会有所帮助,或者我是否可以做一些激活同步手势的事情,但没有一个工作正常,所以我的想法是不使用2个手指捏,我可以使用3(因为它更容易捏比旋转).

问题是,如你所知,Pinch只适用于两根手指.所以我决定我可以继承它UIPinchGestureReconizer并且只允许它在屏幕上有3个手指时工作.其余它可以作为标准捏工作,甚至忽略第三个手指(计算比例),但确保第三个手指仍在屏幕上.

所以我尝试了以下的实现ThreeFingerPinchRecognizer(那个Sub类UIPinchGestureRecognizer)

@implementation GRThreeFingerPinchRecognizer

-(id)initWithTarget:(id)target action:(SEL)action
    {
    self = [super initWithTarget:target action:action];
    if(self){
    }
    return self;
}

- (void)reset
{
    [super reset];
}

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    int numberOfTouches = event.allTouches.count;
    if (numberOfTouches == 3) 
     {
        [super touchesBegan:touches withEvent:event];
     }
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    int numberOfTouches = event.allTouches.count;
    if (numberOfTouches == 3)
    {
        [super touchesMoved:touches withEvent:event];
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{ …
Run Code Online (Sandbox Code Playgroud)

uigesturerecognizer ios uipinchgesturerecognizer

6
推荐指数
1
解决办法
1657
查看次数