2014-03-31 4 views
0
내부 텍스트 상자의 XY 위치를 얻을

내의 UIViewController의 레이아웃은 다음과 같습니다가있는 ScrollView

계층 1 : UIView의 (높이 568입니다)
레이어 2 :있는 UIScrollView (높이 2000입니다)
레이어 3 : UIView의 (높이 2000)

내가이 레이어 3 UIView의 내부 텍스트 필드의 많이 가지고, 내가 레이어 1의 UIView (안 레이어 3 UIView의 원래 XY) 내가 convertPoint

사용해야에 표시 현재 XY를 알고 싶습니다입니까? 잘못된 결과가 있습니다.

-(void)textFieldDidBeginEditing:(UITextField *)textField { 


    CGPoint newPoint = [textField convertPoint:textField.frame.origin fromView:self.view]; 
    NSLog(@"%f",textField.frame.origin.y); 
    NSLog(@"%f", newPoint.y); 

} 
+0

textField가 UIView의 맨 아래에있는 경우 textField.frame.origin.x 및 y – user2277872

+0

을 가져 오는 데 CGFloat를 사용하면 textField.frame.origin.y는 예를 들어 1800이됩니다. 그래서 이것은 현재 y 위치가 아닙니다. 현재 Y 위치를 알고 싶습니다. – user1172579

답변

1

받기 레이어 1보기 및 레이어 3보기에 맞게 IBOutlet을 만듭니다. 당신의 ViewController.m

CGPoint originInSuperview = [self.superView convertPoint:textField.frame.origin fromView:self.subView]; 

에 ViewController.h

@property (strong, nonatomic) IBOutlet UIView *superView; 
@property (strong, nonatomic) IBOutlet UIView *subView; 

에서

그런 다음 당신은 수퍼 뷰 (SuperView)의 x 및 y 위치를해야합니다.

0

슈퍼 뷰는 다른 뷰를 보유하고있는 뷰를 의미합니다. 하위 뷰를 관리합니다. 하위보기는 '보기'에서 보류/추가 된보기를 의미합니다.

하자. 당신은 하위 뷰 UIScrollView가 있고 다른 하위 뷰 UIview가있는 SuperView UIview를 가지고 있습니다.

Might be it helps you. The event-handling methods: OnTouch

+0

네, 내가 레이어 1 UIView 당신이 언급 한 superview 생각합니다. 그래서 어떻게 구현할 수 있습니까? – user1172579

+0

이벤트 처리 메서드를 사용하십시오 : 내가 연결된 링크 – chandan

+0

미안한 chandan, 빌드하는 등의 기술을 사용하고, 내 질문은 scrollView에서 textField 위로 스크롤 할 때 화면에서 x 및 y를 알고 싶습니다. textField의 일부가 맨 아래에 있기 때문에 원래의 x와 y는이 경우 쓸모가 없습니다. textField의 화면 x와 y가 필요합니다. – user1172579

0
UITextField *myTextField; 

는 원점 X와 Y를 textFiled하기

myTextField.frame.origin.x; 
myTextField.frame.origin.y; 

으로 minmum (원점) 및 최대 (끝) 및 textFiled

의 중간 지점 당신이이
CGRectGetMinX(myTextField.frame); 
CGRectGetMaxX(myTextField.frame); 
CGRectGetMinY(myTextField.frame); 
CGRectGetMaxY(myTextField.frame); 
CGRectGetMidX(myTextField.frame); 
CGRectGetMidY(myTextField.frame);