2017-04-10 6 views
0

그것은 어떤 텍스트 필드가 활성화 초점을 가지고 몰라도 텍스트 필드의 키보드를 숨길 수있어? 내가이보기를 숨길 4 텍스트 필드버튼보기이있는 경우Appcelerator : 열려있는 모른 채 닫기 모든 텍스트 필드의 키보드

는 예를 들어, 내가 버튼의 클릭 이벤트에 (모든 키보드를 닫아야합니다이 작업을 수행해야)

textfield1.blur(); 
textfield2.blur(); 
textfield3.blur(); 
textfield4.blur(); 

또는 포커스/흐림 이벤트의 도움으로 현재 열려있는 텍스트 필드의 참조를 전역 변수에 저장하십시오. 내가 발견

답변

0

이 Ti.Keyboard 같은 사용자 정의 모듈을 사용

https://github.com/manojdcoder/keyboard

+0

감사합니다,하지만 모듈은 아직 6.0.3 – WhiteLine

+0

오래된입니까? 그것은 한 기본 방법 단지 래퍼 : '' - (ID) 감추기 (ID) 인수 { dispatch_sync (dispatch_get_main_queue()^{ UIWindow * 윈도우 = [[UIApplication sharedApplication] keyWindow]; UIView * topView = window.rootViewController.view; [topView endEditing : 예]; }); } – danny005

+0

는 소스 코드를 들여다나요 최신 티타늄 SDK와 잘 작동 – danny005

1

원하지 않는 경우 다소 오래된 모듈을 사용하여 종속성을 만들 당신이 이것을 시도 할 수 :

새 파일을 작성하고 당신이 원하는대로 호출,이 예를 들어 yourview.js를 사용했다. 거기에 다음 코드를 붙여 :

module.exports = { 
    view: Ti.UI.createView({ 
     layout: 'vertical', 
     backgroundColor: '#ddd', 
     button: Ti.UI.createButton({ title: 'blur all textfields' }), 
     textfields: [ 
      Ti.UI.createTextField({ value: 'first' }), 
      Ti.UI.createTextField({ value: 'second' }), 
      Ti.UI.createTextField({ value: 'third' }), 
      Ti.UI.createTextField({ value: 'fourth' }), 
     ] 
    }), 
    construct: function() 
    { 
     var self = this; 

     self.view.button.addEventListener('click', function(){ 
      for(var i in self.view.textfields) 
       self.view.textfields[i].blur(); 
     }); 

     // Add textfields to view 
     for(var i in self.view.textfields) 
      self.view.add(self.view.textfields[i]); 

     // Add button to view 
     self.view.add(self.view.button); 

     return self.view; 
    } 
}; 

yourview.js 파일은 당신이 특정 뷰에 표시 할 모든 것을 포함하고 있습니다. 당신이 모든 것을 가지고이 방법은 당신이 테스트를 별도의 파일 :

에서 원하는

var win = Ti.UI.createWindow({ 
    yourview: require('namespace/ui/yourview').construct() 
}); 

// Add your reference to the scope of the Window object 
win.add(win.yourview); 

win.open(); 

// If you want to get the value of the textfields in this scope just use it like this: 
Ti.API.info(win.yourview.textfields[0].value); 

을 : 당신은 다음과 같이됩니다 Window 객체에서보기를 사용하려고 할 때 구축물 기능은 모든 것을 함께 추가됩니다 Ti.5.4.0 SDK가 포함 된 iOS 9.3 시뮬레이터에서 작동합니다.

+0

는 답변 주셔서 감사합니다! 하지만 이렇게하려면 앱을 거의 완전히 바꿀 것이고 이는 매우 복잡합니다. 그것은 나에게 여전히 너무 정교하고, 이상하게도이 기능을위한 더 간단한 방법이없는 방법 인 것처럼 보인다. – WhiteLine

+2

더 간단한 방법은 당신의 .js 파일에 전역 배열 변수를 생성하고 거기에 텍스트 필드를 추가합니다. 그렇다면 내 예에서했던 것처럼 반복 할 수 있습니다. 그것은 간단하지만 가장 아름다운 tbh 아니에요. – Garre

+0

동의. 이것이 우리가 항상 따르는 접근법입니다. Upvoted. – Soumya