2014-11-04 6 views
0

UITapGestureRecognizer를 사용하려고하면 내 iOS 시뮬레이터가 충돌합니다.iOS 시뮬레이터에서 UITapGestureRecognizer가 충돌합니다.

UITapGestureRecognizer tap = new UITapGestureRecognizer (new NSAction(delegate { 
    if(SettingsTapped != null){ 
    SettingsTapped(this, EventArgs.Empty); 
    } 
})); 

내가 UIView의이 제스처를 추가 한 후있는 UITableViewCell이보기를 추가하고 :

이 내 제스처이다. 보기를 터치 한 후 (예외) 응용 프로그램이 중단되고 예외가 표시되지 않습니다.

그녀 인 시뮬레이터 로그 파일에서 출력 :

내가 지금 무엇을 할 수
Nov 4 10:49:47 administorsmini xXxXx[11073]: assertion failed: 13E28 12B411: libsystem_sim_trace.dylib + 19982 [BEE53863-0DEC-33B1-BFFB-8F7AE595CC73]: 0x4 
Nov 4 10:49:49 administorsmini xXxXx[11073]: Stacktrace: 
Nov 4 10:49:49 administorsmini xXxXx[11073]: at <unknown> <0xffffffff> 
Nov 4 10:49:49 administorsmini xXxXx[11073]: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x000a6, 0xffffffff> 
Nov 4 10:49:49 administorsmini xXxXx[11073]: at MonoTouch.UIKit.UIApplication.Main (string[],intptr,intptr) [0x00005] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:62 
Nov 4 10:49:49 administorsmini xXxXx[11073]: at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00038] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:46 
Nov 4 10:49:49 administorsmini xXxXx[11073]: at xXxXx.Application.Main (string[]) [0x00008] in /Users/Norman/Desktop/xXxXx/xXxXx/Main.cs:17 
Nov 4 10:49:49 administorsmini xXxXx[11073]: at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> 
Nov 4 10:49:49 administorsmini xXxXx[11073]: 
Native stacktrace: 
Nov 4 10:49:49 administorsmini xXxXx[11073]: 
================================================================= 
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. 
================================================================= 
Nov 4 10:49:49 administorsmini com.apple.CoreSimulator.SimDevice.27B5D497-B641-4BCA-8FA0-EF9E28E07143.launchd_sim[10951] (UIKitApplication:com.your-company.xXxXx[0x7041][11073]): Service exited due to signal: Abort trap: 6 
Nov 4 10:49:49 administorsmini SpringBoard[10962]: Application 'UIKitApplication:com.your-company.xXxXx[0x7041]' crashed. 
Nov 4 10:49:49 administorsmini assertiond[10966]: notify_suspend_pid() failed with error 7 
Nov 4 10:49:49 administorsmini assertiond[10966]: assertion failed: 13E28 12B411: assertiond + 11523 [3F572A0B-7E12-378D-AFEE-EA491BAF2C36]: 0x1 

? 나는 장치를 개발하고자하지는 ... 내가 UIView의를 무시하고 TouchesBegan() 방법을 사용하여 결국

편집 할 수 있습니다. 클릭할만한 항목을 만드는 데는 여러 가지 방법이 있지만 왜이 항목을 사용할 수 없습니까?

+0

선택자를 인수로 취하는 생성자로 생성 된 tapgesture를 추가하려고 시도 했습니까? – user3455363

+0

네, 제 시도가 만들어진 동일한 컨텍스트에서 대리자가있는 제스처가 필요하기 때문에 예, 시도했지만 불행히도 제 문제를 해결하지 못했습니다. –

답변

1

여기 I'am 당신이 선택을 정의합니다 그래서 만약 그 지정된 내보내기 속성 방법의 정의를 포함 객체 내 응용 프로그램에서 (이) 점을 생성자의

private void addTapGesture() 
    { 
     imgLogo.UserInteractionEnabled = true; 
     var tapGesture = new UITapGestureRecognizer(this, new Selector("ResendTrigger:")); 
     tapGesture.NumberOfTapsRequired = 5; 
     imgLogo.AddGestureRecognizer(tapGesture);   
    } 
    [Export("ResendTrigger:")] 
    public void ResendTrigger(UIGestureRecognizer sender) 
    { 
     System.Diagnostics.Debug.WriteLine("Triggered");} 

첫 번째 인수를 사용하여 코드의 비트이고 메서드 내에서 NSObject 대상은 호출 할 메서드가 예를 들어 셀의 셀 참조가 대상이 될 경우보기의 참조가됩니다.

EDIT

의견을 토대로 사용자가 UITableViewSource를 사용하고 있다고 가정했습니다. 귀하의 사건은 내 사건과 비슷하다고 생각합니다.

UITableSource에서 이벤트를 선언하십시오.
public event EventHandler<DataBaseModels.SavedActions> OnActionSelected;
그런 다음 getCell에서보기 및 내부 메서드에 탭 제스처를 지정하면 보낸 사람 objec에 대한 참조가 UIView로 캐스팅됩니다. 해당 레코드를 식별하는 태그를 유지하십시오

+0

지금 시도했지만 StringElement (MonoTouch.Dialog) 안에 있으며 분명히 이것을 대상 (NSObject)으로 사용할 수 없습니다. 그러나 나는 과거에 이것을했다고 확신합니다 ... –

+0

이것은 (시뮬레이터에서) 작동하지만 실용적이지 않습니다. 저는 셀에 대한 참조를 전달해야하며, 어느 것이 도청되었는지 결정하는 방법을 찾아야합니다. ... 내 장치에서 인식 할 수없는 선택기 예외가 발생합니다. 제스쳐의 NSAction 구조가 잘못된 점은 무엇입니까? –

관련 문제