2013-06-25 1 views
0

Я использую UITapGestureRecognizer для UIImageView в UITableViewCell. Его показ для всей ячейки, но когда я пытаюсь использовать Image, это может привести к сбою. Невозможно найти решение. Я упомянул код ниже.Признак распознавания жеста в мобильном устройстве Montouch

public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) 
{ 
string cellName = "Cell"; 
UITableViewCell cell; 
cell = tableView.DequeueReusableCell ("cellIdentifier"); 
if (cell == null) { 
    cell = new UITableViewCell (UITableViewCellStyle.Default, cellIdentifier); 
    UIImageView toCheckboximage; 
    toCheckboximage = new UIImageView (new RectangleF (20, 10, 20, 20)); 
    toCheckboximage.UserInteractionEnabled = true; 
    toCheckboximage.Tag = 1; 
    cell.ContentView.AddSubview (toCheckboximage); 
} 
UIView toCheckImgV = (UIImageView)cell.ContentView.ViewWithTag (1); 
cell.SelectionStyle = UITableViewCellSelectionStyle.None; 

tapRecognizer = new UITapGestureRecognizer(); 
toCheckImgV.AddGestureRecognizer (tapRecognizer); 
tapRecognizer.AddTarget (() => { 
    Console.WriteLine("coming"); 
}); 
    return cell; 
} 

Заранее спасибо

Обновление: Вход я получил ошибку ниже

Stacktrace: 

    at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff> 
    at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38 
    at CyramedX.UI.Application.Main (string[]) [0x00016] in /Users/qatalys/Desktop/monotouch/Jun_24_2013/CyramedX/CyramedX.UI/Main.cs:21 
    at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> 

Native stacktrace: 

    0 CyramedXUI       0x0007cc9c mono_handle_native_sigsegv + 284 
    1 CyramedXUI       0x00004fe8 mono_sigsegv_signal_handler + 248 
    2 libsystem_c.dylib     0x970308cb _sigtramp + 43 
    3 ???         0xffffffff 0x0 + 4294967295 
    4 UIKit        0x014d499b -[UIGestureRecognizer _updateGestureWithEvent:] + 333 
    5 UIKit        0x014d60df -[UIGestureRecognizer _delayedUpdateGesture] + 46 
    6 UIKit        0x014d8d2d ___UIGestureRecognizerUpdate_block_invoke_0543 + 57 
    7 UIKit        0x014d8cac _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 331 
    8 UIKit        0x014d0a28 _UIGestureRecognizerUpdate + 1348 
    9 UIKit        0x0123d972 -[UIWindow _sendGesturesForEvent:] + 1283 
    10 UIKit        0x0123de53 -[UIWindow sendEvent:] + 98 
    11 UIKit        0x0121bd4a -[UIApplication sendEvent:] + 436 
    12 UIKit        0x0120d698 _UIApplicationHandleEvent + 9874 
    13 GraphicsServices     0x04a58df9 _PurpleEventCallback + 339 
    14 GraphicsServices     0x04a58ad0 PurpleEventCallback + 46 
    15 CoreFoundation      0x03e21bf5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53 
    16 CoreFoundation      0x03e21962 __CFRunLoopDoSource1 + 146 
    17 CoreFoundation      0x03e52bb6 __CFRunLoopRun + 2118 
    18 CoreFoundation      0x03e51f44 CFRunLoopRunSpecific + 276 
    19 CoreFoundation      0x03e51e1b CFRunLoopRunInMode + 123 
    20 GraphicsServices     0x04a577e3 GSEventRunModal + 88 
    21 GraphicsServices     0x04a57668 GSEventRun + 104 
    22 UIKit        0x0120affc UIApplicationMain + 1211 
    23 ???         0x0ed8effd 0x0 + 249098237 
    24 ???         0x0ed8cea0 0x0 + 249089696 
    25 ???         0x0ed8c4cc 0x0 + 249087180 
    26 ???         0x0ed8c636 0x0 + 249087542 
    27 CyramedXUI       0x00009212 mono_jit_runtime_invoke + 722 
    28 CyramedXUI       0x00150bee mono_runtime_invoke + 126 
    29 CyramedXUI       0x00154d14 mono_runtime_exec_main + 420 
    30 CyramedXUI       0x00159845 mono_runtime_run_main + 725 
    31 CyramedXUI       0x00065ea5 mono_jit_exec + 149 
    32 CyramedXUI       0x001dd094 main + 1988 
    33 CyramedXUI       0x00002b55 start + 53 

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 

ответ

0

я нашел проблему, которая на любом GetCell вызов нового UITapGestureRecognizer является создание и добавление еще одного цель. Переместите этот блок в оператор if, чтобы запустить его один раз при создании UITableViewCell.

Кроме того, я рекомендую создать подкласс класса UIImageView с функцией события события события (с UITapGestureRecognizer), чтобы избежать добавления его в любом месте, где это необходимо.

Пожалуйста, добавьте Application Log данные от Xamarin Studio 's console. Без этой информации трудно понять, где именно проблема.

+0

Спасибо, я добавил журнал, пожалуйста, найти это. .. – Sri

+0

Исправить добавление 'UITapGestureRecognizer' на любой вызов' GetCell', а затем повторите попытку. –

+0

Извините, я не получил вас, можете ли вы, пожалуйста, рассказать мне подробно – Sri

0

Ваш аварии может быть вызвано не сохраняя ссылку на

UIImageView toCheckboximage;

или

UIView toCheckImgV

Вы должны создать подкласс UITableViewCell и добавить UIImageView как свойство к этому классу, так что вы сохранить ссылку на C#

+0

Я устанавливаю ссылку публично, пока класс tableview начинается – Sri

+0

Я не понимаю ваш комментарий. Можете ли вы показать код? – svn