Tôi có một số UIScrollView
với UIView
bên trong. Tôi muốn khóa trục x sao cho chế độ xem chỉ được cuộn theo chiều dọc. Làm cách nào để bật khóa định hướng?Làm cách nào để bật khóa định hướng cho UIScrollView?
Trả lời
Đầu tiên, đặt "contentSize" của UIScrollView để có chiều rộng bằng hoặc nhỏ hơn chiều rộng khung của UIScrollView.
Tiếp theo, đặt UIScrollView là "alwaysBounceHorizontal" thành NO. Điều này sẽ ngăn chế độ xem cuộn từ "dải cao su" mặc dù bạn đã nói rằng không có nội dung ngang nào để hiển thị.
UIScrollView *scrollView;
CGSize size = scrollView.contentSize;
size.width = CGRectGetWidth(scrollView.frame);
scrollView.contentSize = size;
scrollView.alwaysBounceHorizontal = NO;
Không quan trọng những gì thực sự nằm trong chế độ xem cuộn.
Bạn sẽ được phân lớp UIScrollView
và ghi đè phương pháp touchesBegan:withEvent:
, phương pháp touchesMoved:withEvent:
và phương thức touchesEnded:withEvent:
.
Bạn sẽ sử dụng các phương pháp đó, cùng với điểm bắt đầu và điểm kết thúc của một lần chạm để tính loại sự kiện chạm nào: đó là một cú chạm đơn giản hoặc vuốt ngang hoặc dọc?
Nếu đó là vuốt ngang, bạn hủy sự kiện chạm.
Hãy xem qua số source code here để tìm hiểu cách bạn có thể bắt đầu.
Tốt hơn để thông báo cho chế độ xem cuộn về ý định của bạn, tôi nghĩ thay vì tự hủy chạm vào chính bạn. Với cách tiếp cận của bạn, nếu bạn bắt đầu kéo theo chiều ngang (ngay cả khi tình cờ), thì bạn không thể kéo theo chiều dọc và làm việc đó được. –
Tôi sợ ai đó sẽ nói điều này ... Một cách chắc chắn để khóa một trục tôi chắc chắn, nhưng tôi nghĩ rằng tôi sẽ tiếp tục tìm kiếm một cách lười biếng hơn để làm điều này. Cảm ơn phản ứng của bạn mặc dù. Nick Farina đã giải quyết vấn đề của tôi bằng cách đề xuất: Trước tiên, hãy đặt "contentSize" của UIScrollView để có chiều rộng bằng hoặc nhỏ hơn chiều rộng khung của UIScrollView. Tiếp theo, đặt "alwaysBounceHorizontal" của UIScrollView thành NO. Điều này sẽ ngăn chế độ xem cuộn từ "dải cao su" mặc dù bạn đã nói rằng không có nội dung ngang nào để hiển thị. – RexOnRoids
#import <UIKit/UIKit.h>
@interface DemoButtonViewController : UIViewController <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *filterTypeScrollView;
@property (nonatomic, strong) UIBarButtonItem *lockButton;
- (void)lockFilterScroll:(id)sender;
@end
#import "DemoButtonViewController.h"
@implementation DemoButtonViewController
@synthesize filterTypeScrollView;
@synthesize lockButton;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor darkGrayColor];
self.filterTypeScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 130, self.view.frame.size.width, 320)];
filterTypeScrollView.contentSize = CGSizeMake(self.view.frame.size.width*4, 320);
filterTypeScrollView.pagingEnabled = YES;
filterTypeScrollView.delegate = self;
[self.view addSubview:filterTypeScrollView];
UIToolbar *lockbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 450, self.view.frame.size.width, 30)];
lockbar.barStyle = UIBarStyleBlackTranslucent;
self.lockButton = [[UIBarButtonItem alloc] initWithTitle:@"Lock Filter Scroll" style:UIBarButtonItemStylePlain target:self action:@selector(lockFilterScroll:)];
[lockbar setItems:[NSArray arrayWithObjects:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],lockButton,nil]];
[self.view addSubview:lockbar];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)lockFilterScroll:(id)sender
{
filterTypeScrollView.scrollEnabled = !filterTypeScrollView.scrollEnabled;
if (filterTypeScrollView.scrollEnabled)
{
[lockButton setTitle:@"Lock Filter Scroll"];
}
else {
[lockButton setTitle:@"Unlock Filter Scroll"];
}
}
@end
- 1. Làm cách nào để mặc định svn: keywords được bật?
- 2. Tôi làm cách nào để tải 100 trang trở lên trong UIScrollView khi bật phân trang?
- 3. Làm cách nào để luôn cuộn UIScrollView?
- 4. Làm cách nào để bật IPCOMP cho ổ cắm?
- 5. UIScrollView xác định hướng cuộn trên scrollViewDidEndDragging khi phân trang
- 6. Làm thế nào để bật hướng dẫn Neon trong Xcode
- 7. Làm cách nào tôi có thể bật thu phóng trên UIWebView bên trong UIScrollView?
- 8. Làm cách nào để tạo UIScrollView theo lập trình?
- 9. Định hướng khóa cho đến khi kết thúc Asynctask
- 10. Làm cách nào để bật hỗ trợ định vị địa lý trong chromedriver cho Selenium?
- 11. Làm cách nào để bật mã định dạng tự động cho Intellij IDEA?
- 12. Làm cách nào để khóa hướng màn hình cho điện thoại chứ không phải cho máy tính bảng? (Android)
- 13. Làm cách nào để sử dụng UIScrollView với AutoLayout (iOS6)?
- 14. Làm cách nào để đồng bộ cuộn với nhiều UIScrollView?
- 15. Làm cách nào để bật gzip?
- 16. Kiểm tra hướng cuộn trong UIScrollView
- 17. Làm cách nào để đặt vị trí cuộn của UIScrollView?
- 18. Làm cách nào để tôi lập trình thu phóng UIScrollView?
- 19. Làm cách nào để bật hướng dẫn tab trong Visual Studio 2010?
- 20. Làm cách nào để phát hiện xem khóa mũ có được bật trong Swing không?
- 21. Làm cách nào để tạo ứng dụng chỉ cho phép định hướng ngang?
- 22. Làm cách nào để chỉ định bố cục khác nhau cho hướng dọc và ngang?
- 23. Làm cách nào để định dạng từ khóa trong Microdata cho CreativeWork?
- 24. Làm cách nào để lấy khóa cho một đối tượng nhất định từ NSMutableDictionary?
- 25. Làm cách nào để bật clear_defaults_for_timestamp?
- 26. Làm cho các emacs để làm nổi bật cú pháp postgresql theo mặc định
- 27. Có hướng dẫn UIScrollView nào tốt trên mạng không?
- 28. Làm cách nào để xác định HResult cho System.IO.IOException?
- 29. Cuộn liên tục giữa UIPanGestureRecognizer và bật lại UIScrollView
- 30. Làm cách nào để phát hiện xem định hướng giao diện người dùng có bị khóa hay không trên iOS?
Điều này đã giúp tôi ngay cả trong Xcode 7. Tôi đã phải tắt thư bị trả lại trong bảng phân cảnh để có được khóa hướng hoạt động (mặc dù tôi đã bật chế độ khóa hướng). –