2014-07-21 2 views
6

Swift에서 iOS 8 용 사용자 지정 키보드 확장 프로그램을 쓰고 있는데 Swype 스타일의 낙서 오버레이를 구현하는 데 문제가 있습니다. 현재 키보드에는 (의 view 속성)이라는 숫자가 키보드의 키에 해당하는 UIButtons이라는 기본 기능이 있습니다. 이 키들은 touchUpInside 이벤트에 응답하고 위 또는 아래로 스 와이프하면 보조 문자를 입력하는 UISwipeGestureRecognizers을 갖습니다. 내 낙서 오버레이보기를 하위보기로 추가하려면 touchesBegan:withEvent:을 재정의하고 내 UIInputViewController에 내 낙서보기를 제거하려면 touchesEnded:withEvent:을 재정의했습니다.조건부로 터치 이벤트를 가로채는 방법은 무엇입니까?

현재 버튼 사이의 간격 중 일부부터 시작하여 낙서를 시도하면 낙서 오버레이보기가 올바르게 표시됩니다. 그러나 UIButton 상단에서 낙서를 시작하면 UIButton은 터치 이벤트를 캡처하고 내 UIInputViewController으로 전달하지 않습니다.

사용자가 단추 사이를 가로 지르지 만 단추 누르기/넘기기를 처리 할 때 내 필기 오버레이보기가 나타나는 방식으로 키보드를 구현할 수 있습니까?

--EDIT--

나는 다음 응답에 이벤트를 전달하도록 touchesBegan/Moved/Ended/Cancelled 방법을 재정 의하여이 문제를 해결하려고 시도했습니다. 버튼을 클릭 한 다음 다른 버튼을 클릭하면 두 개 사이에 낙서가 생길 수 있습니다. 그러나, 나는 여전히 단추 사이에 낙서로 단추에 그릴 아무것도 얻을 수 없습니다. 누구나 더 좋은 생각이 있습니까?

--edit 번호 2-- 현재, 내보기 계층 구조는 다음과 같이 설정

: UIView 서브 뷰합니다 (UIInputViewController에서) : 파단를 오버레이 내 모든 버튼, 다음 내 ScribbleView.

ScribbleViewuserInteractionEnabled을 true로 설정하면 시작 위치에 관계없이 어디서나 낙서가 표시 될 수 있지만 단추 기능이 손실됩니다.

소스 코드의 경우 접촉 이벤트와 기타 등등을 전달하는 다양한 구성을 실험했지만 코드 본문은 https://github.com/Kamaros/ELDeveloperKeyboard입니다.

답변

0

아직 UIInputViewController와 함께 작업하지 않았으므로 여기서 추측하고 있습니다. 하지만 UIButton을 서브 클래 싱하고 touchesBegan:withEvent:touchesEnded:withEvent: 메서드를 재정 의하여 이러한 이벤트를 UIInputViewController에 전달하는 방법은 무엇입니까?

+0

분명히 옵션이지만 각 버튼에 붙인 제스처 인식기와 함께 작동하는 방법을 잘 모르겠습니다. 아무도 더 똑똑한 무엇인가 생각하지 않는다면, 시험할만한 가치가 있습니다. – Kamaros

+0

버튼 사이에 낙서가 생기기 때문에 (뷰 버튼이 아닌) 뷰 계층 구조의 문제가 아닌가? 내 말은, 당신은 단추 자체 아래에 그림을 그리지 않습니까? 다시 말하지만, 코드에 액세스 할 수 없으므로 추측에 불과합니다. 다른 방법으로는, 만약 당신이 kludges에있어, 당신은 항상 모든 버튼 위에 빈 UIView를 넣을 수 있고, 그릴 때마다 그림을 그릴 필요가 없습니다. –

0

ScribbleView interationEnabled를 YES로 설정하고 원하지 않는 touchEvents 아래 버튼으로 전달해야한다고 생각합니다. 예를 들어, 같은 지점이나 길다란 곳에서 길게 누르는 것을 인식하면 사용자는 버튼을 누르기를 원합니다.

관련 문제