2011-01-15 3 views
0

내 앱에는 키보드가 항상 표시되는 화면이 있습니다. 화면의 주요 요소는 UITextfield입니다. 쉬운 데이터 입력을 위해 키보드는 항상 보이게됩니다. 사용자가 데이터 입력을 마쳤을 때 Go를 누르면 앱은 UIActivityIndicatorView를 표시하기 위해 백그라운드 스레드에서 수행되는 4,5 초 액션을 수행합니다.iphone 앱의 UITextfield 키보드에서 이동 버튼 사용 안함

제 문제는 로직이 백그라운드에서 수행되기 때문에 키보드의 Go 버튼이 계속 활성화 된 것으로 표시된다는 것입니다. 사용자는 Go를 다시 실행하여 다시 실행시킬 수 있습니다.

키보드가 사라져서 editable/userinteraction 속성을 No로 설정할 수 없습니다. 백그라운드 스레드가 반환 될 때까지 이동 단추를 비활성화하거나 키보드를 고정시키지 않습니까?

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField; 

그렇지 않으면, 당신은 이미 적절하게 수행 할 수 없을 것입니다 :

답변

0

당신은 분명 이미 UITextFieldDelegate 처리하도록 설정해야합니다. 백그라운드 프로세스가 실행 중이고 키보드가 닫히지 않아야 만 해당 기능에서 NO을 반환하십시오. 예 :

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    if (alreadyPressedGo) 
    return NO; 
    ... 
} 

그러나 이것은 이동 단추를 "사용 불가능하게"하지 않으므로 단순히 기능을 해제하십시오.

+0

나는 이것에 대해 생각했다. 사용자에게 자신의 행동이 수행되고 있다는 느낌을주기에 좋았을 것입니다. 그는 파란색 버튼을보고 혼란스러워하고 다시 클릭하려고합니다. 활동 표시기가 있다고 동의했지만 키보드 근처에 없기 때문에 놓치기 쉽습니다. –

+0

호기심에서, Go를 누르면 키보드를 닫지 않는 이유는 무엇입니까? 당신은 사용의 편의를 위해 언급했습니다. 불행히도, 애플은 UIKeyboard를 닫음으로써 모든 개발자들에게 그들의 인간 - 컴퓨터 상호 작용 디자인을 강요합니다 ... – Skyler

+0

키보드가 지속되면 그들은 애플 리케이션을 거부 할 것이라고 생각합니까? –

0

나는 그것을 시도하지 않았다. (그렇지 않은 경우 OS X 상자가 아니라면 나는 그것을 사용한다.) UIImageView를받는 터치를 배치하여 효과적으로 비활성화 할 수 없는지 궁금하다. 그것의 꼭대기와 비슷합니다. (심지어 회색으로 보이게하기 위해 UIImageView의 불투명도를 설정할 수도 있습니다.)

그림은 @Skyler가 이상적이어야하므로 버튼 조작을 해제하는 것과 결합됩니다.

+0

이것은 좋은 생각입니다. 회색 버튼을 파란색 위에 놓고 필요한 경우에만 스트레칭으로 표시 할 수 있습니다. –

+0

@coder net - 백그라운드 작업이 처리되는 동안 전체 화면 (UIActivityIndicatorView 제일)을 가리는 것이 덜 혼란 스러울 것이라고 생각했습니다. –

+0

쉽게 할 수있는 방법이 있습니까?. UIActivityIndicator 컨트롤 (별도의보기가 아님)이 뷰의 일부 위치에있는 것을 의미합니다. 전체 화면보기를 사용하도록 설정 한 경우 좋았을 것입니다. –

관련 문제