我在一些視圖上使用了幾個手勢識別器,但有時視圖太小,很難打到它。使用識別器是必要的,那麼如何擴大命中區域?如何擴大UIGestureRecognizer的命中區域?
8
A
回答
19
如果您自定義UIView
這樣做,你應該能夠覆蓋hitTest:withEvent:
方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
CGRect frame = CGRectInset(self.bounds, -20, -20);
return CGRectContainsPoint(frame, point) ? self : nil;
}
上面的代碼將添加視圖四周有20點的邊界。在該區域(或視圖本身)的任何地方點擊都會顯示一個命中。
0
如果您使用的是UIImageView
作爲一個按鈕,你可以使用以下擴展名(雨燕3.0):
extension UIImageView {
open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.isHidden || !self.isUserInteractionEnabled || self.alpha < 0.01 { return nil }
let minimumHitArea = CGSize(width: 50, height: 50)
let buttonSize = self.bounds.size
let widthToAdd = max(minimumHitArea.width - buttonSize.width, 0)
let heightToAdd = max(minimumHitArea.height - buttonSize.height, 0)
let largerFrame = self.bounds.insetBy(dx: -widthToAdd/2, dy: -heightToAdd/2)
// perform hit test on larger frame
return (largerFrame.contains(point)) ? self : nil
}
}
類似於UIButton
擴展here
0
@rmaddy答案斯威夫特版本:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let frame = self.bounds.insetBy(dx: -20, dy: -20);
return frame.contains(point) ? self : nil;
}
相關問題
- 1. 如何在Swift中擴展特定UIButton的命中區域?
- 2. 如何擴展Path對象的WPF命中測試區域
- 3. 將UIGestureRecognizer限制在特殊區域
- 4. jQuery的擴大懸停區域
- 5. 如何在swift中使命中區域變大?
- 6. 在Swift中擴展UIGestureRecognizer
- 7. jquery滑塊,擴大點擊區域?
- 8. 擴大物體/特徵像素區域
- 9. CSS翻轉:當隱藏圖像大於錨點區域時,如何保持「命中區域」大小
- 10. 如何減少lwuit的字體大小/命令區域?
- 11. 如何擴大鏈接區域 - 使用CSS代碼
- 12. ExecuteIndirect擴大間接命令緩衝區
- 13. 如何在Firefox中擴展活動區域(超鏈接)的顯着區域?
- 14. 如何擴展按鈕觸摸區域?
- 15. UIButton的Touch Drag/Exit命中區域的大小是怎樣的?
- 16. silverlight無形命中區域
- 17. AS3:定義命中區域
- 18. 如何更改命名區域範圍
- 19. HTML觸摸屏增加文本的「命中區域」大小?
- 20. 如何顯示大型文本區域
- 21. 如何將UICollectionViewCell的可觸摸區域擴大到其界限以外?
- 22. Charts.js極地區域擴展
- 23. Gemfire區域大小
- 24. 放大Stroke.hittest區域
- 25. 更改複選框的命中區域
- 26. Xamarin增加圖像的命中區域
- 27. 如何在Graphics.DrawImage中擴展繪製區域c#
- 28. UITableViewCell中的UIGestureRecognizer
- 29. 如何根據區域大小動態調整javafx中的svg
- 30. 如何使CSS中的懸停區域更大
所以,你問如何放大視圖? – Jordan 2013-03-21 17:11:50
不,當然我知道如何放大視野:)我需要放大點擊幀,而不會影響其真實幀。 – Tesseract 2013-03-21 17:14:42