سؤال

أريد السماح للمستخدم برسم توقيع على شاشة iPhone، لذلك أقوم بإضافة فئة فرعية من UIView وأضف بعض التعليمات البرمجية إلى طريقة "touchesMoved" الخاصة به.


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    firstTouch = [touch locationInView:self];

    CGSize mySize = CGSizeMake(5, 5);
    UIGraphicsBeginImageContext(mySize);                                    
    CGContextRef ctx = UIGraphicsGetCurrentContext();                       

    CGContextBeginPath(ctx);                                                
    CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);                              
    CGContextAddRect(ctx, CGRectMake(0, 0, 5, 5));                          
    CGContextFillPath(ctx);                                                 

    UIImage *redRect = UIGraphicsGetImageFromCurrentImageContext();         
    UIGraphicsEndImageContext();                                            

    UIImageView *redRectView = [[UIImageView alloc] initWithImage:redRect]; 
    redRectView.center = CGPointMake(firstTouch.x, firstTouch.y);                               
    [self addSubview:redRectView];                                      

}

أنا أرسمها بمستطيلات صغيرة وتبين أنها نقطة بنقطة.نظرًا لأنه قبيح للغاية، أريد أن أرسم التوقيع بالخطوط.ولكن كيف يمكن التمييز بين اللمسة الأولى واللمسة الأخيرة؟إذا استخدمت طريقة "touchesMoved" فقط، فيمكنني الحصول على نقطة اتصال واحدة فقط.

هل كانت مفيدة؟

المحلول

وفقا ل مرجع فئة UIResponder, ، ستحتاج أيضًا إلى التنفيذ
– touchesBegan:withEvent: و
– touchesEnded:withEvent:.
بعد تنفيذ هذه الطرق، يجب أن تكون قادرًا على الحصول على بيانات كافية لتنفيذ منحنى بيزيير للمسار أو أي حل مناسب آخر.

[يحرر] ربما يكون الحل الأفضل هو الحصول على اللمسات مباشرة من UIEvent كائن بمجرد أن تتلقى وحدة التحكم الخاصة بك ملف
– touchesMoved:withEvent:إشعار.أيضا، نموذج التعليمات البرمجية GLPaint قد يكون مفيدًا أيضًا.

نصائح أخرى

وبما أن نموذج التعليمات البرمجية GLPaint قد تكون معقدة جدا للمبتدئين، وأجد هذا البرنامج التعليمي. انها بسيطة لمعرفة لمعظم المبتدئين.

ونضع في اعتبارنا أن توقيعا مع إصبع واحد وسوف تكون مختلفة من واحدة مكتوبة بأداة الكتابة. قد تحتاج إلى إعادة التفكير في ما كنت تستخدم التوقيع ل، وسواء كان ذلك ملزما كما كنت في حاجة إليها ليكون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top