2010-07-12 5 views
0

UITextView (다중 행용)를 화면에서 드래그 할 수있는 프로젝트가 있습니다. 지금까지 내 솔루션은 보이지 않는 UIButton의 오버레이였습니다. UIButton의 중심을 드래그했을 때 UITextView의 중심과 동일합니다.UITextView를 뷰 화면 주위로 드래그하는 방법은 무엇입니까?

그러나 UITextView를 드래그하여 바로 편집 할 수있는 앱을 보았으므로 오버레이가 아닌 것 같지만 잘 모르겠습니다.

생각하십니까? 그런데

이 코드에서 C는있는 UIButton이며, 이것은 내가 지금까지 그것을 이동 한 방법입니다

- (void) draggedOut: (UIControl *) c withEvent: (UIEvent *) ev 
{ 

if(self.interfaceOrientation == UIInterfaceOrientationPortrait) 
{ 
    c.center = [[[ev allTouches] anyObject] locationInView:self.view]; 
    AddedText.center = c.center; 
} 
else if(self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) 
{ 
    c.center = [[[ev allTouches] anyObject] locationInView:self.view]; 
    AddedText.center = c.center; 
} 
else if(self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) 
{ 
    c.center = [[[ev allTouches] anyObject] locationInView:self.view]; 
    AddedText.center = c.center; 
} 
else if(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) 
{ 
    c.center = [[[ev allTouches] anyObject] locationInView:self.view]; 
    AddedText.center = c.center; 
} 
} 

답변

0

그럼 실제 uitextview을 조작 할 수 없었다.

처음에는 이동시킬 수있는 버튼 오버레이를 만들려고했으나 편집을 시작하려면 눌렀지만 제대로 맞춰지지 않았습니다.

그런 다음 UITextView 자체를 이동하려면 위의 방법을 시도하십시오. 그러나 그것은 터치 나 드래그에서만 작동합니다. (이것은 touchesBegan의 수정 된 형식이었습니다. & touchesMoved)

UITextView가 하위 뷰인 UIScrollView로 끝났습니다. 이제는 화면의 아무 곳에서나 이동할 수 있으므로 부드럽게 움직일 수 있습니다. 최선은 아니지만 최선의 결과로 모든 것을 손상시키지 않습니다.

0

스크롤을 지원해야합니까? 그렇다면 복잡해질 수 있습니다.

그러나 그렇지 않은 경우 두 가지 접근 방식이 있습니다. 1) textview를 서브 클래스 화하고 touchesBegan, touchesMoved, touchesEnded를 재정의하십시오. 2) 동일한 메시지를 처리하고 텍스트 뷰에 첨부하는 제스처 인식기를 작성합니다. 그것을 사용하는 방법

@interface TouchMoveGestureRecognizer : UIGestureRecognizer 
{ 
    CGPoint _ptOffset; 
} 

@end 

@implementation TouchMoveGestureRecognizer 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch* t = [touches anyObject]; 
    _ptOffset = [t locationInView: self.view]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch* t = [touches anyObject]; 
    CGPoint pt = [t locationInView: self.view.superview]; 
    pt.x -= _ptOffset.x; 
    pt.y -= _ptOffset.y; 

    CGRect r = self.view.frame; 
    r.origin = pt; 
    self.view.frame = r; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    _ptOffset = CGPointMake(-1, -1); 
} 

@end 

하고, :

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    _textView.scrollEnabled = NO; 

    TouchMoveGestureRecognizer* gr = [[[TouchMoveGestureRecognizer alloc] init] autorelease]; 
    [_textView addGestureRecognizer: gr]; 
} 
0
- (void)panTextView:(UIPanGestureRecognizer *)recognizer { 
     NSLog(@"panning"); 

location1 = [recognizer translationInView:draggableTextView]; 


    recognizer.view.center = CGPointMake(recognizer.view.center.x + location1.x, 
            recognizer.view.center.y + location1.y); 



     [recognizer setTranslation:CGPointMake(0,0) inView:draggableTextView]; 

    location1 =[recognizer locationInView:draggableTextView]; 
     NSLog(@"tranlation %@",NSStringFromCGPoint(location1)); 

    [_imgpic addSubview:recognizer.view]; 

appDelegate.txt=draggableTextView.text; 
} 

전화 텍스트 뷰를 만든 후이 방법

는 여기 제스처 일을 할 것입니다 인식기의 예입니다.

관련 문제